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