0

我正在尝试for在 MatLab 的循环中做一些基本的算术运算。

基本上我想一个一个地复制和操作每个元素。首先,我想testDataMean从每个元素中减去 3.6:将每个元素提升到 3 次方,2然后将每个变量相加。最后将变量s除以5( sizeOfTestData)

这应该计算大约〜1.05。

变量是一个包含数字的testData1x5 向量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 回答