低频率,MATLAB

问题描述:

我有真正的麻烦试图创建/使用MATLAB中的过滤器是在非常低的频率足够准确的高通滤波器。低频率,MATLAB

我感兴趣的一个范围内的5和50赫兹之间的信号,高频段没有太多关注的,我真正想要做的是过滤5HZ下任何东西。但是,我发现巴特沃斯滤波器在滤波方面做得很少,只是将信号衰减到正常信号的一半左右。

我已经试过两种方法。一个是使用MATLABs过滤工具fdatool,另一个是下面的手动方法:

filtLow = 5; 
filtHigh = 50; 
Fs = 1000; 
[b, a] = butter(1, filtLow/(Fs/2), 'high'); 
y = filtfilt(b, a, data); 

[b, a] = butter(1, [filtLow/(Fs/2), filtHigh/(Fs/2)]); 
y = filtfilt(b, a, data); 

谁能给我一个建议或代码可以给我更好的结果?

+0

你是如何设计你的巴特沃斯过滤器的?你可以发布一些代码吗? – 2013-03-07 17:28:29

+0

我试过两种方法。其中之一是使用MATLABs滤波器工具(的FDATool),另一个是下方的手动方法: 'filtLow = 5; filtHigh = 50; Fs = 1000; [b,a] = butter(1,filtLow /(Fs/2),'high'); y = filtfilt(b,a,data); OR 并[b,A] =黄油(1,[filtLow /(FS/2),filtHigh /(FS/2)]); y = filtfilt(b,a,data);' – ritchie888 2013-03-07 17:48:11

+0

将来,请在问题中张贴代码并正确格式化。 – 2013-03-07 17:51:00

如果你想在5-50HZ范围内,没有别的信号,你的过滤器的顺序可能会被清盘相当高。此外,巴特沃斯滤波器虽然线性相位和通带中的平坦频率响应不具有从通带到抑制的最佳滚降。如果你可以承受一点失真,椭圆或贝塞尔滤波器会使你的滚降更紧密。另外,如果使用5 Hz作为截止频率,理论上它应该是-3 dB点,这就是为什么你看到1/2的衰减。你需要考虑一些规格。

  1. 我可以在通带中接受的最低频率是多少?
  2. 我可以在通带中接受的最高频率是多少?

您认为这是为了确定所需的可实现的衰减。现在,它看起来好像你想在单一频率上进行无限衰减。不幸的是,您需要确定设计的频率范围内的衰减是可以接受的。

我想我的手在高通部分和下面上来:

Fs = 1000; 
BW = Fs/2; 
% get the recommended order and cutoff for high pass 
[n,Wc] = buttord(10/BW,5/BW,3,10); 
% get the butterworth filter 
[b,a] = butter(n,Wc); 
% get the frequency response 
[H,W] = freqz(b,a); 
% plot the low end of the response 
plot(BW*W(1:10)/pi, 20*log10(abs(H(1:10)))) 

给我 - >

Frequency Response

这似乎相当合理。

+0

感谢您的回应。我能接受的最低频率约为10Hz,5Hz是我的阻带。更高的频率现在不是什么大问题,所以我正试图专注于高通滤波器,我可以在未来适应带通。 – ritchie888 2013-03-07 18:16:50