2009-11-30 8 views
0

Je veux additionner l'acide en tant que boucle for, puis imprimer la valeur totale de toutes les valeurs acides précédentes. Mon problème est en ce moment, il est actuellement en train d'imprimer les valeurs individuelles pas une valeur cumulée de l'acide. Comment puis-je sommeComment additionner des valeurs dans une boucle for dans Matlab?

c'est ce qui est l'impression à la fenêtre de commande

ans =

5.9676 

ans =

2.1676 

ici est 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 
+0

En l'écrivant, votre boucle for ne s'exécute que deux fois. c'est ce que tu veux? – John

+0

oui. Je commence avec un petit nombre de fois. Je prévois d'importer un fichier Excel et de l'exécuter un certain nombre de fois. –

Répondre

4

EDIT - Comme le souligne Donnie, vous n'avez pas besoin de la variable t.

Vous n'avez pas de point-virgule sur votre ligne sum(acidic), donc MATLAB imprime 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. Probablement que vous voulez faire quelque chose comme:

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

disp(sum(acidic)) 

Notez le ./, .* et .^ opérateurs. Ceux-ci disent à MATLAB de faire des opérations élément par élément sur les vecteurs. La dernière ligne disp indique à MATLAB d'imprimer la valeur de sortie.

6

sum() est de sommer toutes les valeurs dans un vecteur, ou le long d'un axe dans une matrice. Vous n'en avez pas besoin avec la façon dont vous avez implémenté votre code. Vous pouvez simplement 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 matlab assez inefficace. Ce que je recommande de faire est de calculer toutes les valeurs à la fois, puis d'utiliser sum. Vous n'avez pas besoin de la déclaration for 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) 

Ce qui fait le calcul en une seule fois. Si vous n'alliez pas toujours utiliser tout pki, vous pouvez l'inscrire, comme ceci:

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

sum(acidic) 
+0

Bon point sur ne pas avoir besoin de t. – mtrw