【问题标题】:Transform "for" loop into a mean in Octave/Matlab在 Octave/Matlab 中将“for”循环转换为均值
【发布时间】:2016-07-01 14:36:29
【问题描述】:

所以我有这个,它实际上是一种“手动”的平均方式

function DESV=cada(arch,col);
a=load(arch);
primera=a(:,col);

n=length(primera);
M=zeros(n,1);
for i=1:n-4
    for r=i:i+4
    M(i)=M(i)+primera(r);
    end
end
M=M/5;
M

它的奇妙之处在于它每 5 步计算一次(我在循环中减去 4,因为存档的长度不完全是 5 的倍数) 现在老师告诉我我必须在里面放一个平均值,而不是把它计算为一个总和。 我不知道该怎么做,我试过了,但我得到了不同的结果,我知道如何使用平均值,但我不知道如何让它每 5 步计算一次,循环的结构是什么。 提前致谢

【问题讨论】:

  • 这看起来只是一个移动平均过滤器。也许谷歌搜索可以帮助你?
  • “我在循环中减去了 4,因为存档的长度不完全是 5 的倍数”
  • 是的,它只是敲响了你所做的一切。
  • 另外,是的,我在谷歌上搜索过,它说我在搜索移动平均线时必须使用 tsmovavg,我认为这不是练习要我做的事情

标签: matlab for-loop octave mean


【解决方案1】:

未经测试:

function DESV=cada(arch,col);
a=load(arch);
primera=a(:,col);

n=length(primera);
M=zeros(n,1);
for i=1:n
    M(i)=mean(primera(i:max(i+4,n)));
end

DESV=M

【讨论】:

  • 因时间原因不作说明。随意编辑和增强这个答案 404。
猜你喜欢
  • 2015-10-31
  • 2016-09-03
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多