对重叠时间测量应用滚动 Window

Applying a Rolling Window on Overlapping Time Measurements

我有一个设备记录的数据(250 赫兹采样设备,总共约 10 万次测量,所以大约 400 秒)。我想创建(重叠)windows 512(~2 秒)或 1024(~4 秒)测量,每个测量间隔可能约为 0.5 秒。我正在使用 Matlab。

有没有特定的方法可以实现这个目标?我想我想使用过滤器来实现这个目标?如果我也想申请,比如 Hann window,它会改变吗?

感谢您的帮助!

让你的数据成为一个行向量。如果您满足以下条件,则可以使用 blockproc

  • 选择“blockSize”参数作为[1 S],其中S是window步;
  • 使用 'BorderSize' 选项设置边框 [0 B]。 Window 长度将是 S+2*B;
  • 'TrimBorder' 属性 设置为 false;
  • 定义一个适当的函数以应用于每个 window 数据。

例如,假设您的长度为 5 window,步骤 3,并且您想要每个 window:

中所有元素的总和
>> x = 1:12;
>> y = blockproc(x, [1 3], @(t) sum(t.data), 'Bordersize', [0 1], 'TrimBorder', false)
y =
    10    25    40    42

哪里

%// 0+1+2+3+4 = 10
%// 3+4+5+6+7 = 25
%// 6+7+8+9+10 = 40
%// 9+10+11+12+0 = 42

注意初始和最终的零填充 windows。 To avoid that, include an adequate amount of initial zeros in the data, choose data size appropriately, and discard initial and final output values:

>> x = 1:14;
>> y = blockproc([0 0 x], [1 3], @(t) sum(t.data), 'Bordersize', [0 1], 'TrimBorder', false)
y =
     3    15    30    45    60    27

哪里

%// 1+2+3+4+5 = 15
%// 4+5+6+7+8 = 30
%// 7+8+9+10+11 = 45
%// 10+11+12+13+14 = 60