我需要从信号中滤除50 Hz。似乎最好的选择是陷波滤波器或LMS滤波器,但是我没有噪声的副本,因此陷波滤波器似乎是最佳选择。
我没有我需要将频率标准化,因为我知道采样频率(16kHz),持续时间为30秒。带宽可以相当紧,49.5Hz〜50.5Hz应该可以。
我需要结合使用
filter
和iirnotch
,但是我不确定如何做到。如果有人可以将所有这些放在一起,我将不胜感激。谢谢。
#1 楼
我不确定iirnotch会做什么,但这是手工设计陷波滤波器的方法。fs = 20000; % sampling rate
f0 = 50; % notch frequency
fn = fs/2; % Nyquist frequency
freqRatio = f0/fn; % ratio of notch freq. to Nyquist freq.
notchWidth = 0.1; % width of the notch
% Compute zeros
notchZeros = [exp( sqrt(-1)*pi*freqRatio ), exp( -sqrt(-1)*pi*freqRatio )];
% Compute poles
notchPoles = (1-notchWidth) * notchZeros;
figure;
zplane(notchZeros.', notchPoles.');
b = poly( notchZeros ); % Get moving average filter coefficients
a = poly( notchPoles ); % Get autoregressive filter coefficients
figure;
freqz(b,a,32000,fs)
% filter signal x
y = filter(b,a,x);
评论
$ \ begingroup $
简单而优雅。我知道notchWidth越小,槽口的宽度就会越小,但是notchWidth与具体数量有关吗?
$ \ endgroup $
–洛洛(Lolo)
16 Mar 9 '16 at 3:06
$ \ begingroup $
@Lolo我认为不是。我刚选择它是因为它似乎是一个方便的数字。
$ \ endgroup $
– Phonon
16 Mar 9 '16 at 4:25
#2 楼
您可以只键入help iirnotch,然后查看以下示例:% Design a filter with a Q-factor of Q=35 to remove a 60 Hz tone from
% system running at 300 Hz.
Wo = 60/(300/2); BW = Wo/35;
[b,a] = iirnotch(Wo,BW);
如果用50 Hz替换60,然后执行:
Y = filter(b,a,X)
它应该可以工作(使用X的数据)
评论
我想问一下阻尼/ redaman上的自回归滤波器仿真如何?如何在上述程序中定义“ x”(其中“ x”是信号输入)...谢谢