MATLAB设采样频率fs = 10 kHz,s(n)是一个方波信号,而噪声信号w(n)是两个高频(f1 =3.5kHz, f2 = 4 kHz)正弦叠加信号,设计一个滤波器
时间: 2024-03-07 15:47:22 浏览: 49
正弦波叠加高斯白噪声.rar_matlab例程_matlab__matlab例程_matlab_
5星 · 资源好评率100%
好的,根据您提供的信息,我们可以设计一个带通滤波器来滤除噪声信号中的高频成分,保留方波信号的基频成分。以下是MATLAB代码:
```matlab
% 定义采样频率和时间序列
fs = 10000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间序列
% 生成方波信号
s = square(2*pi*50*t);
% 生成噪声信号
f1 = 3500; % 第一个高频正弦信号频率
f2 = 4000; % 第二个高频正弦信号频率
w = sin(2*pi*f1*t) + sin(2*pi*f2*t);
% 设计带通滤波器
fpass1 = 40; % 通带1的频率
fstop1 = 30; % 停止带1的频率
fstop2 = 5000; % 停止带2的频率
fpass2 = 5100; % 通带2的频率
Astop = 60; % 停止带衰减
Apass = 1; % 通带波纹
% 根据以上参数设计滤波器
h = fdesign.bandpass('Fp1,Fst1,Fst2,Fp2,Ast1,Ap,Ast2',fpass1,fstop1,fstop2,fpass2,Astop,Apass,Astop,fs);
d = design(h,'equiripple');
% 使用滤波器滤除噪声信号
y = filter(d,w);
% 绘制原始信号和滤波后信号的波形和幅度谱
figure;
subplot(2,1,1);
plot(t,s);
hold on;
plot(t,y);
xlim([0 0.01]);
legend('原始信号','滤波后信号');
xlabel('时间/s');
ylabel('幅值');
title('信号波形');
subplot(2,1,2);
[H,f] = freqz(d,1024,fs);
plot(f,20*log10(abs(H)));
xlim([0 fs/2]);
ylim([-80 5]);
xlabel('频率/Hz');
ylabel('幅值/dB');
title('滤波器幅度谱');
```
运行上述代码后,将会得到一个包含原始信号和滤波后信号的波形图和一个滤波器的幅度谱图。您可以根据需要修改滤波器的参数来调整滤波效果。
阅读全文