对重叠时间测量应用滚动 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
我有一个设备记录的数据(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