在matlab中将3d数组的元素设置为零

时间:2014-10-01 15:47:27

标签: arrays matlab

我确实有一个三维数组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

然而,这使用了一个循环,我几乎肯定应该有一个(智能)方式没有它。 那么如何在不使用循环的情况下做到这一点呢?

1 个答案:

答案 0 :(得分:2)

试试这个:

[xg,yg,zg]=ndgrid(1:size(arr,1),1:size(arr,2),1:size(arr,3));
arr(xg>zg)=0;