Como você somar valores dentro de um loop for em Matlab?
Pergunta
Eu quero resumir ácida como para corridas de loop e, em seguida, imprimir o valor total de todos os valores ácidos anteriores. Meu problema é agora é que está apenas imprimir os valores individuais não um valor somado de ácido. Como posso resumir.
isto é o que está a imprimir na janela de comando
ans =
5.9676
ans =
2.1676
aqui é o meu código
pki = [7.7,3.9];
t= 2;
n=55;
for i = 1:t;
acidic = log10(1/((n-1)*(10^-pki(i))));
sum(acidic)
end
Solução
Editar - Como Donnie pontos fora, você não precisa a variável t
.
Você não tem um ponto e vírgula no seu sum(acidic)
linha, então MATLAB imprime o resultado. Mas parece que você tem alguns outros problemas - ácida é um escalar, então o valor está ficando substituído cada vez. Provavelmente você quer fazer algo como:
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
Observe os operadores ./
, .*
e .^
. Estes MATLAB dizem para fazer elemento por operações elemento ao longo dos vetores. A última linha disp
diz MATLAB para imprimir o valor de saída.
Outras dicas
sum()
é para soma de todos os valores em um vetor, ou ao longo de um eixo de uma matriz. Você não precisa dele com a forma como você tem o seu código implementado. Você poderia apenas fazer
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
No entanto, isso é Matlab bastante ineficiente. O que eu recomendaria fazer é apenas calcular todos os valores de uma vez, e então usar sum
. Você não precisa o comunicado for
se você fazê-lo desta maneira:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
O que faz o cálculo de uma só vez. Se você não estivesse sempre vai usar todos PKI, você poderia subscrito dentro dele, assim:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)