我在 MATLAB 中使用 FIR 滤波器来过滤信号。在下图中,将我的过滤器应用于顶部图会创建底部图:
这样做的效果是成功地对数据进行低通滤波,但将所有内容都移动了 500 毫秒。
这是我用来低通过滤数据的例程:
% (Start with any vector called 'inputData')
samplingRate = 1000;
filterLength = 1000;
filterCutOff = 90;
filterType = fir1(filterLength , filterCutOff/(samplingRate/2), 'low'); % define the low pass filter
inputData = filter(filterType,1,inputData); % filter the data
我知道我的数据的 500 毫秒移位与过滤器长度的一半(1000 毫秒)有关,但为什么会发生这种情况,我做错了什么?我知道我可以只删除过滤数据的前 500 毫秒,但我也丢失了最后 500 毫秒的数据。
请注意,此示例需要信号处理工具箱。