PPG的Matlab低通巴特沃斯滤波器

PPG的Matlab低通巴特沃斯滤波器,matlab,lowpass-filter,Matlab,Lowpass Filter,我已经在FPGA上实现了一个脉搏血氧计,我正在以采样率=115200采集数据。因此,当我在Matlab中绘制数据时,我得到以下波形: 我想设置一个简单的低通滤波器来滤除噪声。因此,过滤后的数据如下所示: 如何设计此过滤器?如何确定巴特沃斯滤波器的截止频率([b,a]=巴特沃斯(n,Wn)) 上面提到的算法是有效的,我是从互联网上得到的,但我不知道它是如何工作的?在上述算法中没有提及采样率,但它仍然有效!我甚至不知道它是否正确。因为你正在设计一个数字滤波器,所以采样率是不相关的。数字滤波器接收

我已经在FPGA上实现了一个脉搏血氧计,我正在以
采样率=115200
采集数据。因此,当我在Matlab中绘制数据时,我得到以下波形:

我想设置一个简单的低通滤波器来滤除噪声。因此,过滤后的数据如下所示:

如何设计此过滤器?如何确定巴特沃斯滤波器的截止频率(
[b,a]=巴特沃斯(n,Wn)


上面提到的算法是有效的,我是从互联网上得到的,但我不知道它是如何工作的?在上述算法中没有提及采样率,但它仍然有效!我甚至不知道它是否正确。

因为你正在设计一个数字滤波器,所以采样率是不相关的。数字滤波器接收一个值流并输出一个值流,它没有机会知道它们的接收速率,也不重要

因此,数字滤波器中的频率总是相对的。实际上,
butter
的帮助解释了这一点:

截止频率Wn必须为0.0 因此,如果你的自然采样率是115200赫兹,你想在,我不知道,10千赫处切断,那么传递给黄油的频率是10000/(115200/2)=0.1736


如果您想知道为什么它是采样率的一半:采样率为Fs时,我们可以在[-Fs/2,Fs/2]中看到频率内容(由于Shannon Nyquist),因此采样率的一半是有意义的最高频率。

谢谢,但在上述算法中:
W1=0.5/60;%到底是什么下截止W2=4/60;%更高的截止值
0.5/60
4/60
来自哪里?尝试绘制信号的
FFT
。根据该图,您可以知道信号中哪些是重要的频率,以及应该使用截止点的位置。具体值可能是根据您发现的示例中的应用程序选择的。有时,您可以从应用程序中知道哪些频率可以过滤掉。如果你不这样做,你必须亲自检查光谱,看看相关部分在哪里,哪些部分可以过滤掉(例如尝试STFT)。谢谢你的输入。你能告诉我如何设计一个简单的低通滤波器来减少输出中的噪声吗。我不太擅长滤波器设计。要设计低通滤波器,请使用
[b,a]=butter(n,w)
其中
n
是滤波器顺序,
w
是截止频率。我无法告诉您如何选择截止频率,因为它取决于您的数据。您可以使用STFT查看您的频谱以找到它。否则,我真的建议你尝试一些价值观来了解它的功能和外观。您将在去噪和丢失峰值等信息之间进行权衡(如果
w
lower,两者都会更高)。没有一般规则,因为它取决于数据。。。
W1=0.5/60;  % lower cutoff 
W2=4/60;    %higher cutoff
[b,a]=butter(2,[W1,W2]); % Bandpass digital filter design 
h = fvtool(b,a); % Visualize filter
low_pass_data1 = filtfilt(b,a,data); % applying filter to our data