using FIND in 3D matrix

2 ビュー (過去 30 日間)
xplore29
xplore29 2013 年 5 月 29 日
I am trying to find the 3rd dimension index value for the following case
A(:,:,1)=[1 2 ; 3 4]
A(:,:,2)=[9 8 ; 4 4]
A(:,:,3)=[2 4 ; 7 4]
B=[1 2 ; 3 4]
How can I use find(.) for this purpose

採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 29 日
idx=find(arrayfun(@(x) isequal(A(:,:,x),B),1:size(A,3)))

その他の回答 (2 件)

Sean de Wolski
Sean de Wolski 2013 年 5 月 29 日
I would do that like this:
A(:,:,1)=[1 2 ; 3 4];
A(:,:,2)=[9 8 ; 4 4];
A(:,:,3)=[2 4 ; 7 4];
A(:,:,4)=A(:,:,1);
B=[1 2 ; 3 4];
idx = find(all(all(bsxfun(@eq,A,B),1),2))
Find where all elements in rows/cols are equal in pages
  2 件のコメント
xplore29
xplore29 2013 年 5 月 29 日
I didnt understand why would you declare A(:,:,4)=A(:,:,1).
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 5 月 29 日
It's just an example to test the code

サインインしてコメントする。


Andrei Bobrov
Andrei Bobrov 2013 年 5 月 29 日
[ii,jj]=ismember(reshape(A,[],size(A,3))',B(:)','rows');
out = jj(ii);

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by