我正在尝试创建一个循环,它将检查列总和是否不等于零。如果是的话,我想做点什么……
for i:size(A,2)
if A(:,sum(A)==0) ~=0
%do something
end
end
但该总和返回矩阵中的所有列,而不是一次通过一个
有什么建议么?
用这个替换你if
的:
if sum(A(:,i))~=0
它采用i
第 -th 列的所有元素,将它们相加并将它们与0
. 如果总和不为零,%do something
则将被执行。
你的if
声明正在做的是得到A(:,sum(A)==0)
。现在sum(A)==0
检查所有元素的总和是否A
为零。可能不会,在这种情况下它会给出一个假(零),所以你将测试A(:,0)~=0
哪个不起作用,因为 Matlab 从 1 开始索引。如果矩阵总和为 0,则为sum(A)==0
真(它将为 1 ) 并且您将得到A(:,1)~=0
哪个不起作用,因为它将向量A(:,1)
与标量进行比较,0
.
你也可以用这个实现同样的目标:
for i = find(sum(A) ~= 0)
% do something
end
i
这将对列总和不等于 0的每一列进行迭代。
尝试这个:
for i = 1:size(A,2)
if(sum(A(:,i)) ~= 0)
% do something
end
end