How to find specific elements in a matrix
26 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Voss
il 8 Nov 2022
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 Commenti
Più risposte (1)
Walter Roberson
il 8 Nov 2022
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 Commenti
Vedere anche
Categorie
Scopri di più su Multidimensional Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!