matlab哈明窗带阻
时间: 2023-12-09 16:36:18 浏览: 67
以下是使用Matlab实现哈明窗带阻滤波器的代码和注释:
```matlab
% 设计带阻滤波器
fs = 1000; % 采样频率
f1 = 50; % 通带截止频率1
f2 = 150; % 通带截止频率2
f3 = 200; % 阻带截止频率1
f4 = 300; % 阻带截止频率2
Rp = 1; % 通带最大衰减
Rs = 60; % 阻带最小衰减
Wp = [f1 f2]*2/fs; % 归一化通带截止频率
Ws = [f3 f4]*2/fs; % 归一化阻带截止频率
[n,Wn] = buttord(Wp,Ws,Rp,Rs); % 计算巴特沃斯滤波器的阶数和截止频率
[b,a] = butter(n,Wn,'stop'); % 计算巴特沃斯滤波器的系数
% 绘制滤波器的幅频响应
figure;
freqz(b,a); % 绘制滤波器的幅频响应
subplot(2,2,2); % 将图像分为2行2列,当前绘制第2个子图
xfft = abs(fft(b,1024)); % 计算滤波器系数的傅里叶变换
N = length(b); % 滤波器系数的长度
plot((0:N-1)/N*fs,20*log10(xfft)); % 绘制滤波器系数的幅频响应
xlabel('Frequency (Hz)'); % 设置x轴标签
ylabel('Magnitude (dB)'); % 设置y轴标签
title('Filter Frequency Response'); % 设置图像标题
axis([0 fs/2 -100 10]); % 设置坐标轴范围
grid on; % 显示网格线
% 生成信号并进行滤波
t = 0:1/fs:1; % 生成时间序列
x = sin(2*pi*100*t) + sin(2*pi*200*t); % 生成包含100Hz和200Hz正弦波的信号
y = filter(b,a,x); % 对信号进行滤波
% 绘制信号和滤波后的信号
figure;
subplot(2,1,1); % 将图像分为2行1列,当前绘制第1个子图
plot(t,x); % 绘制原始信号
xlabel('Time (s)'); % 设置x轴标签
ylabel('Amplitude'); % 设置y轴标签
title('Original Signal'); % 设置图像标题
subplot(2,1,2); % 将图像分为2行1列,当前绘制第2个子图
plot(t,y); % 绘制滤波后的信号
xlabel('Time (s)'); % 设置x轴标签
ylabel('Amplitude'); % 设置y轴标签
title('Filtered Signal'); % 设置图像标题
```
阅读全文