2009-11-30 53 views
0

我想在for循环运行时总结酸性,然后打印出所有以前酸性值的总值。我现在的问题是,现在只是印刷个别价值不是酸性的总和价值。我如何总结。如何在Matlab中对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

正如你所写的那样,你的for循环只执行两次。这是你想要的吗? – John 2009-11-30 23:36:35

+0

是的。我开始少数几次。我计划导入一个excel文件并运行n次。 – 2009-11-30 23:39:02

回答

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打印输出值。

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

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

sum(acidic) 

这确实一气呵成的计算:如果你这样说,你不需要for声明。如果你并不总是要使用所有的pki,你可以像下面这样描述:

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

sum(acidic) 
+0

不需要t的好处。 – mtrw 2009-12-01 00:22:09