我确实有一个三维数组A(m,n,t)
,(8 x 60 x 8),填充正数。
我想要做的是如果第三个索引(t)小于第一个(m),则将此数组的每个元素设置为零。 因此,对于例子A(5,42,3)应该设置为0,因为m = 5&gt; T = 3。但是不应改变A(5,13,7),因此m = 5 <= t = 7。
如果要查看squeeze(A(:,val,:))
,其中val是1到60之间的任何数字,那么我要做的是将下三角矩阵设置为零。
我的方法是对第一个索引进行循环
for ii=2:8
A(ii,:,1:ii-1)=0;
end
然而,这使用了一个循环,我几乎肯定应该有一个(智能)方式没有它。 那么如何在不使用循环的情况下做到这一点呢?
答案 0 :(得分:2)
试试这个:
[xg,yg,zg]=ndgrid(1:size(arr,1),1:size(arr,2),1:size(arr,3));
arr(xg>zg)=0;