如何在Matlab中对for循环中的值求和?

时间:2009-11-30 23:28:04

标签: matlab sum

我想在for循环运行时求和,然后打印出所有先前酸值的总值。我现在的问题是它目前只打印单个值而不是酸性的总和值。我如何总结。

这是打印到命令窗口的内容

ans =

5.9676

ans =

2.1676

这是我的代码

pki = [7.7,3.9];

t= 2;


n=55;

for i = 1:t;

    acidic = log10(1/((n-1)*(10^-pki(i))));

    sum(acidic)

end 

2 个答案:

答案 0 :(得分:6)

sum()用于求和向量中的所有值,或沿矩阵中的轴求和。您不需要实现代码的方式。你可以做到

pki = [7.7,3.9];
t= 2;
n=55;
acidic = 0;
for i = 1:t;
  acidic = acidic + log10(1/((n-1)*(10^-pki(i))));
end;

acidic

然而,这是相当无效的matlab。我建议做的只是一次计算所有值,然后使用sum。如果你这样做,你不需要for语句:

pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));

sum(acidic)

一次性进行计算。如果你并不总是要使用所有的pki,你可以下标,就像这样:

pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));

sum(acidic)

答案 1 :(得分:4)

编辑 - 正如Donnie指出的那样,您不需要t变量。

您的行sum(acidic)上没有分号,因此MATLAB会打印结果。但看起来你还有其他一些问题 - 酸性是一个标量,所以每次都会被覆盖。可能你想做类似的事情:

pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));

disp(sum(acidic))

请注意./.*.^运算符。这些告诉MATLAB对向量进行逐元素操作。最后一行disp告诉MATLAB打印输出值。