基于等波纹最佳逼近法的fir数字带通滤波器

这篇博客介绍了如何使用MATLAB中的remezord和remez函数来设计等波纹滤波器。首先通过remezord函数估算滤波器的阶数、频率边界和权重,然后使用remez函数进行实际设计。博客展示了具体代码示例,包括通带、阻带的定义,以及滤波器的幅频和相频响应的绘制。通过这些步骤,读者可以理解如何在MATLAB中实现定制的数字滤波器设计。
摘要由CSDN通过智能技术生成
[n, fo, mo, w]  = remezord([1500 2000], [1 0], [0.01 0.1], 8000);

b = remez(n, fo, mo, w);

%[h w] = freqz(b, 1, 128);

%plot(w/pi, abs(h));

freqz(b, 1, 128);

在这里插入图片描述

2\

[n,fpts,mag,wt]=remezord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);%用remezord函数估算出remez函数要用到的阶n、归一化频带边缘矢量fpts、频带内幅值响应矢量mag及加权矢量w,使remez函数设计出的滤波器满足f、a及dev指定的性能要求。
h2=remez(n,fpts,mag,wt);%设计出等波纹滤波器
[hh2,w2]=freqz(h2,1,256);
figure(2)
subplot(2,1,1)
plot(w2/pi,20*log10(abs(hh2)))
grid
xlabel('归一化频率w');ylabel('幅度/db');
subplot(2,1,2)
plot(w2/pi,angle(hh2))
grid
xlabel('归一化频率w');ylabel('相位/rad');
h2

在这里插入图片描述
3\

fedge=[800 1000];
%通频带边界频率fc=800Hz  阻带边界fr=1000Hz
%gedge:通带、阻带边界频率

%mval:两个边界处的幅值
mval=[1 0];

%dev:指定设计出的滤波器和理想滤波器的幅度响应在每个频带的最大允许误差,通带和阻带的波动
dev=[0.0559 0.01];

%采样频率fs=4000
fs=4000;

%N:频带的阶数
%fpts:归一化后的各频带的边界频率
%mag:归一化后的各频带幅度值a
%wt:加权系数

%fedge:各频带的边界频率,为模拟频率(Hz)或归一化数字频率,但必须以0开始,Fs/2(用归一化频率时对应1)结束,而且省略了0和Fs/2两个频点
%mval:mval中的每个元素表示fedge给定的一个逼近频段上希望逼近的幅度
%dev:表示fedge和mval描述的各逼近频段允许的波纹振幅(幅频响应最大偏差)
%fs:采样频率,缺省时默认为2Hz
[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);

%N:频带阶数
%fpts:滤波器期望频率特性的频率向量标准化频率 一般0~1 (递增向量,允许定义重复频点)
%mag:滤波器期望频率特性的幅值向量
%wt:函数返回的吕滤波器系数(N+1)
b=remez(N,fpts,mag,wt);%设计出等波纹滤波器

%freqz:求离散系统的频响特性
%h:频率响应,以向量形式返回,如果指定n,则h长度为n,如未指定n或指定n未、为空向量,则h长度为512
%返回具有存储在b和1中的传递函数系数的数字滤波器的n点频率响应矢量h和相应的角频率矢量w
[h,w]=freqz(b,1,256)
%%
%画图
%原图
figure(1)
plot(w*2000/pi,h);
grid;
xlabel('频率/Hz') ;ylabel('幅度/dB');
title("原图")

%幅频图
figure(2)
plot(w*2000/pi,20*log10(abs(h)));
grid;
xlabel('频率/Hz') ;ylabel('幅度/dB');
title("FIR滤波器后幅频图")

%相位幅
figure(3)
plot(w*2000/pi,angle(h));
grid;
xlabel('归一化频率w');ylabel('相位/rad');
title("FIR滤波器后相频图图")

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4\

h2=remez(n,fpts,mag,wt);%设计出等波纹滤波器
%n:频带阶数
%fpts:滤波器期望频率特性的频率向量标准化频率 一般0~1 (递增向量,允许定义重复频点)
%mag:滤波器期望频率特性的幅值向量
%b:函数返回的吕滤波器系数(n+1)

%freqz:求离散系统的频响特性
%hh2:频率响应,以向量形式返回,如果指定n,则hh2长度为n,如未指定n或指定n未、为空向量,则hh2长度为512
[hh2,w2]=freqz(h2,1,256);
 %返回具有存储在h2和1中的传递函数系数的数字滤波器的n点频率响应矢量hh2和相应的角频率矢量w2。

 %%
 %画图
figure(2)
subplot(2,1,1)
plot(w2/pi,20*log10(abs(hh2)))
grid
%grid:网格
xlabel('归一化频率w');ylabel('幅度/db');

subplot(2,1,2)

plot(w2/pi,angle(hh2))

grid

xlabel('归一化频率w');ylabel('相位/rad');

在这里插入图片描述

  • 1
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值