我有一个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
我打算(独立地)这样做,以便我可以将找到的索引应用于其他矩阵的每个切片。
这可以在不使用循环的情况下完成吗?提前谢谢!
答案 0 :(得分:0)
使用[i,j,k] = ind2sub(size(a), ind)
将您的索引转换为下标。这样的东西应该适用于3d数组:
i
也就是说,输出(j
,k
,ind
)都将具有相同的大小,与(i,j,k)
的大小相同。换句话说,它为a<0.3
的每个值提供了一组下标a
(坐标)。
您想要/期望从您的问题中得到什么输出并不完全清楚,但如果您想在j(i==1),k(i==1)
中为每个页面单独订阅,则必须进一步过滤(例如i
为第一个maxPayment
)中的页面。