Pregunta

Quiero sumar ácido mientras se ejecuta el bucle for y luego imprimir el valor total de todos los valores ácidos anteriores. Mi problema ahora es que solo está imprimiendo los valores individuales, no un valor sumado de ácido. ¿Cómo sumo?

esto es lo que se imprime en la ventana de comandos

ans =

5.9676

ans =

2.1676

aquí está mi 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 
¿Fue útil?

Solución

EDITAR - Como Donnie señala que no necesita la variable t .

No tiene un punto y coma en la línea sum (acidic) , por lo que MATLAB imprime el resultado. Pero parece que tiene otros problemas: el ácido es un escalar, por lo que el valor se sobrescribe cada vez. Probablemente quieras hacer algo como:

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

disp(sum(acidic))

Tenga en cuenta los operadores ./ , . * y . ^ . Estos le dicen a MATLAB que haga operaciones elemento por elemento sobre los vectores. La última línea disp le dice a MATLAB que imprima el valor de salida.

Otros consejos

sum () es para sumar todos los valores en un vector, o a lo largo de un eje en una matriz. No lo necesita con la forma en que implementa su código. Podrías hacer

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

Sin embargo, eso es bastante ineficaz matlab. Lo que recomendaría hacer es calcular todos los valores a la vez y luego usar sum . No necesita la instrucción for si lo hace de esta manera:

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

sum(acidic)

Que hace el cálculo de una vez. Si no siempre vas a usar todo pki, puedes subíndicelo, así:

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

sum(acidic)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top