How to populate a matrix based on a function?
6 ビュー (過去 30 日間)
古いコメントを表示
I have a 2d matrix of width 256 and height 128.
I also have some theoretical function: 127.5 * cos(pi * row_index) + col_index
I want to populate the cells of the matrix using this function so that the row_index/col_index pull from each cell as it is computed.
Ideally I need to use functions that can run against each cell in a matrix and also have access to the following variables:
- Current Column Index
- Current Row Index
- Current Cell Value (I'm not using this in the earlier example, but I'd like to be able to use it in the future)
0 件のコメント
採用された回答
Walter Roberson
2018 年 3 月 4 日
[RowIndices, ColumnIndices] = ndgrid(1:size(YourArray,1), 1:size(YourArray,2));
population_function = @(col_idx, row_idx, CurrentCellValue) 127.5 * cos(pi * row_index) + col_index;
populated_matrix = arrayfun(population_function, ColumnIndices, RowIndices, YourArray);
... But you will find that it is more efficient to just use vectorization:
[col_index, row_index] = ndgrid(1:size(YourArray,1), 1:size(YourArray,2));
populated_matrix = 127.5 * cos(pi * row_index) + col_index;
4 件のコメント
s s
2020 年 8 月 23 日
It's so cumbersome to do this in matlab compared with the Mathematica function "Table".
Walter Roberson
2020 年 8 月 23 日
You can also use
col_index = 1:size(YourArray,1);
row_index = 1:size(YourArray,2);
populated_matrix = 127.5 * cos(pi * row_index(:)) + col_index;
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Language Support についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!