使用matlab,给带通滤波器加矩形窗,实现原始信号是由50Hz正弦波和200Hz的正弦波组成,设计通带为125Hz到300Hz,通过函数fir1设计,其阶数是30,通带为0.25 < W <0.6的矩形窗代码,并显示效果
时间: 2024-03-17 10:40:18 浏览: 77
好的,根据你的要求,我会为你提供解答。以下是使用MATLAB实现的代码:
```matlab
% 定义采样率和截止频率
Fs = 1000;
Fstop1 = 100; % 第一个截止频率
Fpass1 = 125; % 第一个通带频率
Fpass2 = 300; % 第二个通带频率
Fstop2 = 350; % 第二个截止频率
% 计算截止频率、通带频率和通带宽度
Wstop1 = Fstop1/(Fs/2);
Wpass1 = Fpass1/(Fs/2);
Wpass2 = Fpass2/(Fs/2);
Wstop2 = Fstop2/(Fs/2);
Apass = 1; % 通带最大衰减(dB)
dev = [0.01 0.01]; % 通带和阻带最大波纹(dB)
W = [Wstop1 Wpass1 Wpass2 Wstop2]; % 设计频带
% 使用fir1函数设计滤波器
b = fir1(30, W, 'bandpass', rectwin(31));
% 输出滤波器的频率响应
freqz(b, 1, 1024, Fs);
% 生成原始信号
t = 0:1/Fs:1;
x = sin(2*pi*50*t) + sin(2*pi*200*t);
% 滤波
y = filter(b, 1, x);
% 绘制原始信号和滤波后的信号
subplot(2,1,1);
plot(t, x);
title('原始信号');
xlabel('时间(秒)');
ylabel('幅度');
subplot(2,1,2);
plot(t, y);
title('滤波后的信号');
xlabel('时间(秒)');
ylabel('幅度');
```
这是使用MATLAB实现的滤波器设计和信号滤波的完整代码。与之前的代码不同之处在于,我们在`fir1`函数中使用了`rectwin(31)`来为滤波器添加矩形窗。最后,我们绘制了原始信号和滤波后的信号,以显示滤波效果。请在MATLAB中运行此代码,并查看结果。如果你有任何问题,请随时向我提问。
阅读全文