如何使用`find`查找3D矩阵每页的索引?

时间:2017-10-15 09:15:08

标签: matlab matrix 3d

我有一个3D矩阵,每个页面/切片独立于其他切片。因此,我想使用find命令来过滤每个页面中的数据。但是,在应用时,find将返回行向量中的索引,这些索引将我的数据整体描述,实际上并非如此。例如:

a=rand(1,10,5);
ind=find(a<0.3);

这会返回ind之类的内容:

ind=
1 2 5 9 10 11 20 24 25 ...

我期待的是:

ind(:,:,1)=
1 2 3  

ind(:,:,2)=
1 5 6 10 %based on each slice, independent to other slices

我打算(独立地)这样做,以便我可以将找到的索引应用于其他矩阵的每个切片。

这可以在不使用循环的情况下完成吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用[i,j,k] = ind2sub(size(a), ind) 将您的索引转换为下标。这样的东西应该适用于3d数组:

i

也就是说,输出(jkind)都将具有相同的大小,与(i,j,k)的大小相同。换句话说,它为a<0.3的每个值提供了一组下标a(坐标)。

您想要/期望从您的问题中得到什么输出并不完全清楚,但如果您想在j(i==1),k(i==1)中为每个页面单独订阅,则必须进一步过滤(例如i为第一个maxPayment)中的页面。