Find subscripts in a 3D matrix
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Fernando Montero
il 28 Gen 2021
Commentato: Fernando Montero
il 28 Gen 2021
I have a 3D matrix, called A, and I want to find the subscripts for all places where elements of vector B appear. The elements of B apper more than one time in the matrix A.
I tried it using function subs to obtain directly the susbsripts, but I obtained a result where many page numbers are wrong (it shows a higher number (5) than the existing pages (3)). Bellow the code:
A(:,:,1)=[1 2 ; 3 3 ; 5 7 ; 4 2];
A(:,:,2)=[9 1 ; 4 4 ; 9 2 ; 4 6];
A(:,:,3)=[2 4 ; 7 4 ; 3 1 ; 6 4];
B = [9 4 1];
[row,col,page] = ind2sub(size(A),find(A(:)==B))
Also I tried using function find to obtain the linear indexes to later convert them to subscripts; however, I only obtain the first place were the element is placed on the matrix:
n = arrayfun(@(x) find(A==x,1),B);
[row, col, page] = ind2sub(size(A), n);
0 Commenti
Risposta accettata
Walter Roberson
il 28 Gen 2021
A(:,:,1)=[1 2 ; 3 3 ; 5 7 ; 4 2];
A(:,:,2)=[9 1 ; 4 4 ; 9 2 ; 4 6];
A(:,:,3)=[2 4 ; 7 4 ; 3 1 ; 6 4];
B = [9 4 1];
[row,col,page] = ind2sub(size(A),find(ismember(A,B)))
4 Commenti
Walter Roberson
il 28 Gen 2021
find(ismember(A,B)) would be linear
sub2ind(size(A), row,col,page)
if you need to reconstruct linear
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Spline Postprocessing 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!