我想在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
答案 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打印输出值。