¿Cómo se suman valores dentro de un ciclo for en Matlab?
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
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)