質問
forループの実行中に酸性を合計し、以前のすべての酸性値の合計値を出力します。私の問題は現在、酸性の合計値ではなく、個々の値を印刷しているだけです。どうやって合計しますか。
これがコマンドウィンドウに出力されるものです
ans =
5.9676
ans =
2.1676
ここに私のコードがあります
pki = [7.7,3.9];
t= 2;
n=55;
for i = 1:t;
acidic = log10(1/((n-1)*(10^-pki(i))));
sum(acidic)
end
解決
編集-ドニーは、 t
変数は必要ないことを指摘しています。
sum(acidic)
の行にセミコロンがないため、MATLABは結果を出力します。しかし、いくつかの他の問題があるように見えます-酸性はスカラーなので、値は毎回上書きされます。おそらくあなたは次のようなことをしたいでしょう:
pki = [7.7,3.9];
n = 55;
acidic = log10(1./((n-1).*(10.^-pki)));
disp(sum(acidic))
./
、。*
、および。^
演算子に注意してください。これらは、ベクトルに対して要素ごとの操作を行うようにMATLABに指示します。最後の disp
行は、出力値を出力するようにMATLABに指示します。
他のヒント
sum()
は、ベクトル内またはマトリックスの軸に沿ってすべての値を合計するためのものです。コードを実装する方法では必要ありません。あなただけでできます
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
しかし、それはかなり効率の悪いmatlabです。推奨するのは、すべての値を一度に計算してから、 sum
を使用することです。この方法で行う場合、 for
ステートメントは不要です。
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki)));
sum(acidic)
一度に計算を実行します。常にすべてのpkiを使用するわけではない場合は、次のように添え字を付けることができます。
pki = [7.7,3.9];
t= 2;
n=55;
acidic = log10(1 ./ ((n-1) .* (10 .^ -pki(1:t))));
sum(acidic)
所属していません StackOverflow