【发布时间】:2010-04-03 19:28:56
【问题描述】:
我正在分配一个 3D 数组,其中包含许多不同载荷工况的一些信息。数组中的每一行都定义了一个特定的负载情况(其中有 3 个),如果行的所有元素(3D 中)都等于零,我想删除负载情况(即行)。
我现在的代码是:
Array = zeros(3,5) %# Initialise array
Numloadcases = 3;
Array(:,:,1) = [10 10 10 10 10;
0 0 0 0 0;
0 0 0 0 0;]; %# Expand to a 3D array
Array(:,:,2) = [10 10 10 10 10;
0 0 0 0 0;
0 0 0 0 0;];
Array(:,:,3) = [10 10 10 10 10;
0 0 0 0 0;
0 0 20 0 0;];
Array(:,:,4) = [10 10 10 10 10;
0 0 0 0 0;
0 0 20 0 0;];
%# And to remove the second row:
for i = 1:Numloadcases
if sum(Array(i,:,:)) == 0
Array(i,:,:) = [];
end
end
目前,我必须删除行的 for 循环会导致索引错误,因为循环中数组的大小会发生变化。
任何人都可以看到解决此问题的方法吗?
【问题讨论】: