将特定列matlab中的所有值相加

时间:2013-11-07 02:53:19

标签: matlab matrix

我正在尝试创建一个循环,它将检查列总和是否不等于零。如果是的话,我想做点什么......

    for i:size(A,2)
        if A(:,sum(A)==0) ~=0
          %do something
        end
    end

但该总和会返回矩阵中的所有列,而不是一次经过一个

有什么建议吗?

3 个答案:

答案 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