0

forMatLabのループ内でいくつかの基本的な演算を実行しようとしています。

基本的には各要素を1つずつコピーして操作したいです。まず、3.6 を減算します。testDataMean各要素から、各要素を のべき乗に上げてから、2各変数を合計します。最後に変数s5( sizeOfTestData) で割る

これは約 ~1.05 と計算されます。

変数は、testData数値を含む 1x5 ベクトルです3, 4, 2, 5, 4

   s = 0;

for k = 1:sizeTestData
    p = testData(k);
    q = p - testDataMean;
    r = q^2;
    s = s + r;
    s/5;

end

このループは、実際には最後の行でエラーをスローしますs = s + r。同じサイズのベクトルを操作する場合、ほとんどの状況で関数を使用できることは承知しsumていますが、for ループのコンテキストではわかりません。

4

1 に答える 1

3

sum(s) / numel(s)定義上、 は と同じであることに注意してくださいmean(s)

ループのないアプローチ:

testData = [3, 4, 2, 5, 4]
q = testData - mean(testData);
s = mean(q.^2);
s = 1.0400

ワンライナー:

s = mean((testData-mean(testData)).^2)
s = 1.0400

そしてあなたの最初のアプローチ:

(バグ修正後)

testData = [3, 4, 2, 5, 4]

s = 0;
sizeTestData = length(testData);
testDataMean = mean(testData);

for k = 1:sizeTestData
   p = testData(k);
   q = p - testDataMean;
   r = q^2;
   s = s + r;  
end
s = s / numel(s);
s = 1.0400
于 2014-02-08T12:45:51.423 に答える