Using find in a 3d matrix in MATLAB.
137 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a 3D Matrix such as
QQ=cat(3,w,q)
QQ(:,:,1) =
1 2
3 4
QQ(:,:,2) =
5 6
7 8
now i want to use
[r c]=find(QQ,8) r=max(r) c=max(c)
to find my position for point 8. 'find' just works for 2D arrays .for the 3D case it doesnt work. is there is possibility for 3D arrays?
2 Kommentare
Kenneth Eaton
am 3 Feb. 2011
I think you have a typo in your code. If you're looking for the position of the value 8, you should do FIND(QQ == 8). The second input to FIND isn't the value you're looking for, it's the *number of indices* to find.
Akzeptierte Antwort
Kenneth Eaton
am 3 Feb. 2011
When finding values in multidimensional (i.e. greater than 2-D) arrays using the function FIND, it is best to get a single linear index from FIND then convert it to subscripts using the function IND2SUB. Here's how you can find the position of 8 in your 3-D matrix:
[r,c,v] = ind2sub(size(QQ),find(QQ == 8));
2 Kommentare
Rik
am 11 Sep. 2017
I wrote up a function that does this for the general case. It works with the same syntax as the built-in find, but it also supports multidimensional matrices. You can find it on the File Exchange. Then you can simply run:
[r,c,v]=findND(QQ==8);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!