Как вы суммируете значения внутри цикла for в Matlab? - PullRequest
0 голосов
/ 01 декабря 2009

Я хочу суммировать кислотность при выполнении цикла 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 ]

6 голосов
/ 01 декабря 2009

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)
4 голосов
/ 01 декабря 2009

РЕДАКТИРОВАТЬ - Как указывает Донни , вам не нужна переменная t.

В вашей строке нет точки с запятой sum(acidic), поэтому MATLAB напечатает результат. Но, похоже, у вас есть другие проблемы - acid это скаляр, поэтому значение каждый раз перезаписывается. Возможно, вы хотите сделать что-то вроде:

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

disp(sum(acidic))

Обратите внимание на операторы ./, .* и .^. Они говорят, что MATLAB выполняет элемент за элементом операции над векторами. Последняя строка disp указывает MATLAB напечатать выходное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...