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 
War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top