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 
Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top