Comment additionnez-vous les valeurs dans une boucle for dans Matlab?
Question
Je souhaite additionner l'acide lors de l'exécution de la boucle for, puis afficher la valeur totale de toutes les valeurs précédentes. Mon problème est que c’est actuellement qu’il n’imprime que les valeurs individuelles et non une seule valeur d’acide. Comment puis-je résumer.
c'est ce qui est imprimé dans la fenêtre de commande
ans =
5.9676
ans =
2.1676
voici mon code
pki = [7.7,3.9];
t= 2;
n=55;
for i = 1:t;
acidic = log10(1/((n-1)*(10^-pki(i))));
sum(acidic)
end
La solution
MODIFIER : sous la forme Donnie souligne que vous n'avez pas besoin de la variable t
.
Vous n'avez pas de point-virgule sur votre ligne sum (acide)
, donc MATLAB affiche le résultat. Mais il semble que vous ayez d'autres problèmes - l'acide est un scalaire, donc la valeur est écrasée à chaque fois. Vous voulez probablement faire quelque chose comme:
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
Notez les opérateurs ./
, . *
et . ^
. Celles-ci indiquent à MATLAB d'effectuer des opérations élément par élément sur les vecteurs. La dernière ligne disp
indique à MATLAB d'imprimer la valeur de sortie.
Autres conseils
sum ()
permet de faire la somme de toutes les valeurs d'un vecteur ou le long d'un axe d'une matrice. Vous n'en avez pas besoin avec la manière dont vous avez implémenté votre code. Vous pouvez juste faire
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
Cependant, c'est assez inefficent matlab. Ce que je recommanderais, c’est de calculer toutes les valeurs en même temps, puis d’utiliser sum
. Vous n'avez pas besoin de l'instruction pour
si vous le faites de cette façon:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
Quel est le calcul en une fois? Si vous n'utilisiez pas toujours pki dans son intégralité, vous pouvez vous y inscrire, comme suit:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)