Matlab中循环的一元运算

Matlab中循环的一元运算,matlab,for-loop,unary-operator,Matlab,For Loop,Unary Operator,我试图在MatLab中的for循环中做一些基本的算法 基本上我想一个一个地复制和操作每个元素。首先,我想从每个元素中减去3.6:testDataMean,将每个元素提高到2的幂,然后对每个变量求和。最后将变量s除以5(sizeOfTestData) 这应计算约1.05 testData变量是一个1x5向量,包含数字3,4,2,5,4 s = 0; for k = 1:sizeTestData p = testData(k); q = p - testDataMean;

我试图在MatLab中的
for
循环中做一些基本的算法

基本上我想一个一个地复制和操作每个元素。首先,我想从每个元素中减去3.6:
testDataMean
,将每个元素提高到
2
的幂,然后对每个变量求和。最后将变量
s
除以
5
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循环的上下文中,我不确定。

注意
sum(s)/numel(s)
根据定义与
mean(s)
相同

无循环方法: 一行: 你最初的做法是: (修复错误后)

请注意,
sum(s)/numel(s)
按定义与
mean(s)
相同

无循环方法: 一行: 你最初的做法是: (修复错误后)

请注意,
sum(s)/numel(s)
按定义与
mean(s)
相同

无循环方法: 一行: 你最初的做法是: (修复错误后)

请注意,
sum(s)/numel(s)
按定义与
mean(s)
相同

无循环方法: 一行: 你最初的做法是: (修复错误后)



错误是什么?“矩阵尺寸必须一致”?很抱歉它说,“未定义的函数或变量”好吧,你有你的答案。将
s=0
放在循环前面。错误是什么?“矩阵尺寸必须一致”?很抱歉它说,“未定义的函数或变量”好吧,你有你的答案。将
s=0
放在循环前面。错误是什么?“矩阵尺寸必须一致”?很抱歉它说,“未定义的函数或变量”好吧,你有你的答案。将
s=0
放在循环前面。错误是什么?“矩阵尺寸必须一致”?很抱歉它说,“未定义的函数或变量”好吧,你有你的答案。将
s=0
放在循环前面。感谢您的回复。很抱歉,最后我错过了一个关键点,那就是将求和的变量
s
除以
5
。我已经编辑了我的原始帖子以适应。谢谢,我会尝试一下你的解决方案,但是的,这正是我想要的。我只是在练习RMSE(均方根误差)的概念。@user1574598:高效地编程Matlab非常重要,它尽可能避免循环。因此,Daniel的一条线性函数不仅仅是一条线性函数,而是计算RMSE的Matlab方法。除了可以做得更短之外:
s=var(testData,1)
;-)谢谢,知道如何避免循环很有用:-)我会继续练习,希望能做得更好。令人惊讶的是,6-8行代码竟然可以减少到一行!谢谢你的回复。很抱歉,最后我错过了一个关键点,那就是将求和的变量
s
除以
5
。我已经编辑了我的原始帖子以适应。谢谢,我会尝试一下你的解决方案,但是的,这正是我想要的。我只是在练习RMSE(均方根误差)的概念。@user1574598:高效地编程Matlab非常重要,它尽可能避免循环。因此,Daniel的一条线性函数不仅仅是一条线性函数,而是计算RMSE的Matlab方法。除了可以做得更短之外:
s=var(testData,1)
;-)谢谢,知道如何避免循环很有用:-)我会继续练习,希望能做得更好。令人惊讶的是,6-8行代码竟然可以减少到一行!谢谢你的回复。很抱歉,最后我错过了一个关键点,那就是将求和的变量
s
除以
5
。我已经编辑了我的原始帖子以适应。谢谢,我会尝试一下你的解决方案,但是的,这正是我想要的。我只是在练习RMSE(均方根误差)的概念。@user1574598:高效地编程Matlab非常重要,它尽可能避免循环。因此,Daniel的一条线性函数不仅仅是一条线性函数,而是计算RMSE的Matlab方法。除了可以做得更短之外:
s=var(testData,1)
;-)谢谢,知道如何避免循环很有用:-)我会继续练习,希望能做得更好。令人惊讶的是,6-8行代码竟然可以减少到一行!谢谢你的回复。很抱歉,最后我错过了一个关键点,那就是将求和的变量
s
除以
5
。我已经编辑了我的原始帖子以适应。谢谢,我会尝试一下你的解决方案,但是的,这正是我想要的。我只是在练习RMSE(均方根误差)的概念。@user1574598:高效地编程Matlab非常重要,它尽可能避免循环。因此,Daniel的一条线性函数不仅仅是一条线性函数,而是计算RMSE的Matlab方法。除了可以做得更短之外:
s=var(testData,1)
;-)谢谢,知道如何避免循环很有用:-)我会继续练习,希望能做得更好。令人惊讶的是,6-8行代码竟然可以减少到一行!
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