質問

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top