【问题标题】:Octave: Smoothing a value-series (not a classical Moving average)八度:平滑值系列(不是经典的移动平均线)
【发布时间】:2021-09-30 11:51:34
【问题描述】:

我需要一个函数,其中 o=f(v) 返回一个包含 o(i)=(v(i)+v(i+1))/2 的向量,换句话说:

(v(1)+v(2))/2
(v(2)+v(3))/2
(v(3)+v(4))/2
(v(4)+v(5))/2
...

例如对于输入向量

v = [1;3;5;3;9;9]

结果是

[2;4;4;6;9]

那是什么?移动平均线?平滑函数? 在 Matlab 中似乎有“平滑”,这可能是我正在寻找的,但我在 Octave 中看不到。 提前感谢您的提示。

【问题讨论】:

  • 经典移动平均线。

标签: octave smoothing


【解决方案1】:

有多种方法可以做到这一点。一个简单的实现将是

(v(1:end-1)+v(2:end))/2

这对于更复杂的移动平均线来说有点麻烦,在这种情况下你可以使用卷积

conv(v, [0.5, 0.5], 'valid')

这里的第二个数组[0.5, 0.5] - 称为“内核” - 定义连续值的加权方式。

最后在新版本的 octave 中还有movmean

【讨论】:

    【解决方案2】:

    对我来说,它看起来像插值。见interp1

    v = [1;3;5;3;9;9];
    n = numel(v);
    iv = interp1(1:n, v, 1.5:n);   % or any other equally-spaced x values
    

    结果:

    iv =
       2   4   4   6   9
    

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2013-12-22
      • 2017-09-01
      • 2023-03-09
      • 2020-12-11
      • 2011-04-15
      相关资源
      最近更新 更多