Wie summieren Sie Werte innerhalb einer for-Schleife in Matlab?
Frage
Ich will als die for-Schleife läuft sauer summieren und dann aus dem Gesamtwert aller vorherigen sauren Wert drucken. Mein Problem ist jetzt ist es derzeit nur das Drucken der einzelnen Werte nicht einen Summenwert von sauer. Wie Summe ich.
Dies ist, was gedruckt wird in das Befehlsfenster
am =
5.9676
am =
2.1676
Hier ist mein 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
Lösung
Bearbeiten - unter Donnie weist darauf hin, Sie die t
Variable nicht benötigen.
Sie haben noch ein Semikolon auf Ihrer Linie sum(acidic)
, so MATLAB das Ergebnis druckt. Aber es sieht aus wie einige andere Probleme haben - sauer ein Skalar ist, so dass der Wert jedes Mal überschrieben zu werden. Wahrscheinlich wollen Sie etwas tun:
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
Beachten Sie die ./
, .*
und .^
Betreiber. Diese sagen MATLAB Element zu tun, indem Element Operationen über die Vektoren. Die letzte disp
Zeile sagt MATLAB den Ausgabewert zu drucken.
Andere Tipps
sum()
ist für alle Werte in einem Vektor oder entlang einer Achse, die in einer Matrix aufsummiert werden. Sie brauchen es nicht mit der Art und Weise Sie Ihren Code implementiert haben. Sie könnten nur tun
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
Allerdings, das ist ziemlich ineffiziente Matlab. Was würde ich empfehlen, die Berechnung tut nur alle Werte auf einmal, und dann sum
verwenden. Sie brauchen nicht die for
Aussage, wenn Sie es auf diese Weise tun:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
, die die Berechnung in einem Rutsch tut. Wenn Sie nicht immer würden alle pki verwenden, könnte man in sie tiefgestellt, etwa so:
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)