我有从设备记录的数据(250-Hz采样设备,约100K测量总共约400秒)。我想要创建512个(〜2秒)或1024(〜4秒)测量的(重叠)窗口,可能需要约0.5秒的时间间隔。我正在使用Matlab。在重叠时间测量上应用滚动窗口
有没有一种特定的方法来实现这个目标?我想我想用一个过滤器来实现这个目标?如果我想申请一个Hann窗户,它会改变吗?
感谢您的帮助!
我有从设备记录的数据(250-Hz采样设备,约100K测量总共约400秒)。我想要创建512个(〜2秒)或1024(〜4秒)测量的(重叠)窗口,可能需要约0.5秒的时间间隔。我正在使用Matlab。在重叠时间测量上应用滚动窗口
有没有一种特定的方法来实现这个目标?我想我想用一个过滤器来实现这个目标?如果我想申请一个Hann窗户,它会改变吗?
感谢您的帮助!
让你的数据成为一个行向量。您可以使用blockproc
如果您:
blockSize
”的说法为[1 S]
,其中S
是窗口的步骤;'BorderSize'
选项设置边框[0 B]
。窗口长度将为S+2*B
;'TrimBorder'
属性为false
;例如,假设你一个长度为5的窗口与步骤3中,并且要在每个窗口中的所有元素的总和:
>> 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
注零在最初和最后的窗口填充。为了避免这种情况,包括在数据初始零足够量的,适当地选择数据大小和丢弃初始和最终输出值:
>> 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
在第一个例子中,为什么要预先定义'x '? '@(x)sum(x.data),'中的'x'是否代表'blocproc'函数调用中第一个参数的每个块? – kkuilla
@kkuilla是的,我正在定义数据'x'而没有使用它。谢谢!现在更正 –
检查['blockproc'](HTTP ://es.mathworks.com/help/images/ref/blockproc.html)使用任意函数处理可能重叠的块 –
感谢您的回应。它看起来像blockproc专注于图像处理。我也不认为它实际上允许重叠块。否则,这将是我正在寻找的功能。 – anon
我认为它的确如此。你必须适当地设置'blocksize'(一个入口'1',第二个入口窗口步骤)并使用''BorderSize''选项产生所需的窗口大小 –