Как вы суммируете значения внутри цикла for в Matlab?

StackOverflow https://stackoverflow.com/questions/1823129

  •  11-07-2019
  •  | 
  •  

Вопрос

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

Решение

РЕДАКТИРОВАТЬ - как Донни отмечает, что вам не нужна переменная 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 напечатать выходное значение.

Другие советы

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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top