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