How to find specific elements in a matrix
40 ビュー (過去 30 日間)
古いコメントを表示
Good Day,
I have a matrix: R55 = [2,4,6,9,11;7,8,9,10,6;1,2,6,4,5;,6,9,8,5,6;1,6,5,7,5];
I would like to find the specific locations of all the 6's (rows and colums) using a for loop and using logical matrices rather than using just the "find" function.
0 件のコメント
採用された回答
Voss
2022 年 11 月 8 日
R55 = [2,4,6,9,11;7,8,9,10,6;1,2,6,4,5;,6,9,8,5,6;1,6,5,7,5]
val = 6;
Using a for loop:
rows = [];
columns = [];
m = size(R55,1);
for ii = 1:numel(R55)
if R55(ii) == val
rows(end+1) = mod(ii-1,m)+1;
columns(end+1) = ceil(ii/m);
end
end
rows, columns
Using two nested for loops:
rows = [];
columns = [];
[m,n] = size(R55);
for jj = 1:n
for ii = 1:m
if R55(ii,jj) == val
rows(end+1) = ii;
columns(end+1) = jj;
end
end
end
rows, columns
Using a logical matrix, without find:
is_val = R55 == val
idx = 1:numel(R55);
[rows,columns] = ind2sub(size(R55),idx(is_val))
0 件のコメント
その他の回答 (1 件)
Walter Roberson
2022 年 11 月 8 日
This kind of task is usually easier to write with nested for loops over size() of the array. If you are required to use a single for loop then loop over the linear indices and ind2sub to translate to row and column
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!