开发者

How do you sum values inside a for loop in Matlab?

开发者 https://www.devze.com 2022-12-12 18:33 出处:网络
I want to sum acidic as the for loop runs and then print out the total value of all the previous acidic values. My problem is right now is it is currently just printing the individual values not one s

I want to sum acidic as the for loop runs and then print out the total value of all the previous acidic values. My problem is right now is it is currently just printing the individual values not one summed value of acidic. How do I sum.

this is what is printing to the command window

an开发者_JAVA百科s =

5.9676

ans =

2.1676

here is my code

pki = [7.7,3.9];

t= 2;


n=55;

for i = 1:t;

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

    sum(acidic)

end 


sum() is for summing all of the values in a vector, or along an axis in a matrix. You don't need it with the way you have your code implemented. You could just do

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

However, that's fairly inefficent matlab. What I would recommend doing is just calculating all of the values at once, and then use sum. You don't need the for statement if you do it this way:

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

sum(acidic)

Which does the calculation in one go. If you weren't always going to use all of pki, you could subscript into it, like so:

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

sum(acidic)


EDIT - As Donnie points out, you don't need the t variable.

You don't have a semicolon on your line sum(acidic), so MATLAB prints the result. But it looks like you have some other problems - acidic is a scalar, so the value is getting overwritten each time. Probably you want to do something like:

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

disp(sum(acidic))

Note the ./, .*, and .^ operators. These tell MATLAB to do element by element operations over the vectors. The last disp line tells MATLAB to print the output value.

0

精彩评论

暂无评论...
验证码 换一张
取 消