How to find specific elements in a matrix
25 次查看(过去 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 中查找有关 Multidimensional Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!