3D matrix pattern matching

4 次查看(过去 30 天)
Find which row of 3d matrix matches an array along the third dimension. For ex:
I want to find [1 0 0] along 3rd dimension of Zb, so here Zb(4,1,:) , Zb(5,4,:) and some others match [1, 0, 0]. How to know if the match occurs (for any random value of 3rd dimension of matrix) and if so, what are the row, column indices? Also, can this be done without for loop?

采纳的回答

Jonas
Jonas 2021-5-19
you can use e.g.
a(:,:,1)=ones(2);
a(:,:,2)=2*ones(2);
a(:,:,3)=[1 3; 3 1];
pattern(1,1,:)=1:3;
whereToFind=all(a==pattern,3)
  2 个评论
Shilpi Mishra
Shilpi Mishra 2021-5-20
Thanks a lot, to know positions of 1 in the whereToFind, is there a direct way without loop to get list of indices as [4,1], [3,2] and so on?
Jonas
Jonas 2021-5-20
编辑:Jonas 2021-5-20
yes, use
[row,col]= find(whereToFind)
if you want the pairwise indices then [row col] will give you all pairs

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by