若信号受到加性白噪声污染,实际获得的信号为xn(t)=x(t)+randn(size(t)),设计一个FIR滤波器从噪声污染的信号xn(t)中恢复出源信号x(t)。设采样频率fs=1000Hz
时间: 2023-07-28 19:09:46 浏览: 66
首先需要确定滤波器的设计指标,包括通带截止频率、阻带截止频率、通带最大衰减和阻带最小衰减等。由于是从噪声污染的信号中恢复出源信号,因此需要将通带置于信号的频率范围内,同时尽可能降低噪声的影响,因此选择低通滤波器。
假设源信号的最高频率为fmax,通带截止频率为fpass,则可以根据采样定理得到通带截止频率对应的数字频率为:
wp = 2*pi*fpass/fs
通带最大衰减为Ap,阻带最小衰减为As,阻带截止频率为fstop,则可以使用remez函数设计FIR滤波器:
```matlab
fmax = 100; % 假设源信号最高频率为100Hz
fpass = 50; % 通带截止频率为50Hz
fstop = 100; % 阻带截止频率为100Hz
Ap = 1; % 通带最大衰减为1dB
As = 60; % 阻带最小衰减为60dB
wp = 2*pi*fpass/fs;
ws = 2*pi*fstop/fs;
dev = [(10^(Ap/20)-1)/(10^(Ap/20)+1) 10^(-As/20)];
[n,fo,ao,w] = remezord([wp,ws]/(2*pi),[1 0],dev,fs);
h = remez(n,fo,ao,w);
```
通过remez函数得到了FIR滤波器的系数h,然后可以使用filter函数对信号进行滤波:
```matlab
x = sin(2*pi*fmax*(0:1/fs:1)); % 生成测试信号
noise = randn(size(x)); % 生成加性白噪声
xn = x + noise; % 受到噪声污染的信号
y = filter(h,1,xn); % 恢复出源信号
```
最后得到的y即为恢复出的源信号。需要注意的是,在实际应用中,通带截止频率、阻带截止频率、通带最大衰减和阻带最小衰减等参数需要根据具体情况进行调整。