[Matlab]椭圆滤波器设计:低通、高通、带通和带阻

椭圆滤波器(Elliptic filter)又称考尔滤波器(Cauer filter):

这是在通带和阻带等波纹的一种滤波器。

椭圆滤波器相比其他类型的滤波器,在阶数相同的条件下有着最小的通带和阻带波动。

它在通带和阻带的波动相同,这一点区别于在通带和阻带都平坦的巴特沃斯滤波器,以及通带平坦、阻带等波纹或是阻带平坦、通带等波纹的切比雪夫滤波器。

测试代码:

%  EllipticFilter.m
%  椭圆滤波器的设计
%

clear;
close all;
clc;

fs = 1000; %Hz 采样频率
Ts = 1/fs;
N  = 1000; %序列长度
t = (0:N-1)*Ts;
delta_f = 1*fs/N;
f1 = 50;
f2 = 100;
f3 = 200;
f4 = 400;
x1 = 2*0.5*sin(2*pi*f1*t);
x2 = 2*0.5*sin(2*pi*f2*t);
x3 = 2*0.5*sin(2*pi*f3*t);
x4 = 2*0.5*sin(2*pi*f4*t);
x = x1 + x2 + x3 + x4; %待处理信号由四个分量组成

X = fftshift(abs(fft(x)))/N;
X_angle = fftshift(angle(fft(x)));
f = (-N/2:N/2-1)*delta_f;

figure(1);
subplot(3,1,1);
plot(t,x);
title(‘原信号‘);
subplot(3,1,2);
plot(f,X);
grid on;
title(‘原信号频谱幅度特性‘);
subplot(3,1,3);
plot(f,X_angle);
title(‘原信号频谱相位特性‘);
grid on;

%设计一个切比雪夫低通滤波器,要求把50Hz的频率分量保留,其他分量滤掉
wp = 55/(fs/2);  %通带截止频率,取50~100中间的值,并对其归一化
ws = 60/(fs/2);  %阻带截止频率,取50~100中间的值,并对其归一化
alpha_p = 3; %通带允许最大衰减为 db
alpha_s = 40;%阻带允许最小衰减为 db
%获取阶数和截止频率
[ N1 wc1 ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N1,alpha_p,alpha_s,wc1,‘low‘);
%滤波
filter_lp_s = filter(b,a,x);
X_lp_s = fftshift(abs(fft(filter_lp_s)))/N;
X_lp_s_angle = fftshift(angle(fft(filter_lp_s)));
figure(2);
freqz(b,a); %滤波器频谱特性
figure(3);
subplot(3,1,1);
plot(t,filter_lp_s);
grid on;
title(‘低通滤波后时域图形‘);
subplot(3,1,2);
plot(f,X_lp_s);
title(‘低通滤波后频域幅度特性‘);
subplot(3,1,3);
plot(f,X_lp_s_angle);
title(‘低通滤波后频域相位特性‘);

%设计一个高通滤波器,要求把400Hz的频率分量保留,其他分量滤掉
wp = 350/(fs/2);  %通带截止频率,取200~400中间的值,并对其归一化
ws = 380/(fs/2);  %阻带截止频率,取200~400中间的值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N2 wc2 ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N2,alpha_p,alpha_s,wc2,‘high‘);
%滤波
filter_hp_s = filter(b,a,x);
X_hp_s = fftshift(abs(fft(filter_hp_s)))/N;
X_hp_s_angle = fftshift(angle(fft(filter_hp_s)));
figure(4);
freqz(b,a); %滤波器频谱特性
figure(5);
subplot(3,1,1);
plot(t,filter_hp_s);
grid on;
title(‘高通滤波后时域图形‘);
subplot(3,1,2);
plot(f,X_hp_s);
title(‘高通滤波后频域幅度特性‘);
subplot(3,1,3);
plot(f,X_hp_s_angle);
title(‘高通滤波后频域相位特性‘);

%设计一个带通滤波器,要求把50Hz和400Hz的频率分量滤掉,其他分量保留
wp = [65 385 ] / (fs/2);  %通带截止频率,50~100、200~400中间各取一个值,并对其归一化
ws = [75 375 ] / (fs/2);  %阻带截止频率,50~100、200~400中间各取一个值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N3 wn ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N3,alpha_p,alpha_s,wn,‘bandpass‘);
%滤波
filter_bp_s = filter(b,a,x);
X_bp_s = fftshift(abs(fft(filter_bp_s)))/N;
X_bp_s_angle = fftshift(angle(fft(filter_bp_s)));
figure(6);
freqz(b,a); %滤波器频谱特性
figure(7);
subplot(3,1,1);
plot(t,filter_bp_s);
grid on;
title(‘带通滤波后时域图形‘);
subplot(3,1,2);
plot(f,X_bp_s);
title(‘带通滤波后频域幅度特性‘);
subplot(3,1,3);
plot(f,X_bp_s_angle);
title(‘带通滤波后频域相位特性‘);

%设计一个带阻滤波器,要求把50Hz和400Hz的频率分量保留,其他分量滤掉
wp = [65 385 ] / (fs/2);  %通带截止频率?,50~100、200~400中间各取一个值,并对其归一化
ws = [75 375 ] / (fs/2);  %阻带截止频率?,50~100、200~400中间各取一个值,并对其归一化
alpha_p = 3; %通带允许最大衰减为  db
alpha_s = 40;%阻带允许最小衰减为  db
%获取阶数和截止频率
[ N4 wn ] = ellipord( wp , ws , alpha_p , alpha_s);
%获得转移函数系数
[ b a ] = ellip(N4,alpha_p,alpha_s,wn,‘stop‘);
%滤波
filter_bs_s = filter(b,a,x);
X_bs_s = fftshift(abs(fft(filter_bs_s)))/N;
X_bs_s_angle = fftshift(angle(fft(filter_bs_s)));
figure(8);
freqz(b,a); %滤波器频谱特性
figure(9);
subplot(3,1,1);
plot(t,filter_bs_s);
grid on;
title(‘带阻滤波后时域图形‘);
subplot(3,1,2);
plot(f,X_bs_s);
title(‘带阻滤波后频域幅度特性‘);
subplot(3,1,3);
plot(f,X_bs_s_angle);
title(‘带阻滤波后频域相位特性‘);

  

效果:

原始信号:

生成的低通滤波器和滤波后的效果:

生成的高通滤波器和滤波后的效果:

生成的带通滤波器和滤波后的效果:

生成的带阻滤波器和滤波后的效果:

原文地址:https://www.cnblogs.com/alimy/p/9140984.html

时间: 2024-10-02 03:58:39

[Matlab]椭圆滤波器设计:低通、高通、带通和带阻的相关文章

基于MATLAB的IIR滤波器设计与实现

基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的模拟滤波器,然后再离散化为满足给定技术指标的数字滤波器.对应的工具函数由完全设计函数——butter.cheby1.cheby2.ellip.besself:阶数估计函数——buttord.cheb1ord.cheb2ord.ellipord:低通模拟原型滤波器函数——buttap.cheb1ap.

基于Matlab中FDATool工具箱的滤波器设计及相关文件的生成

一.摘要 除了采用编程的方法实现滤波器之外,Mat l ab中自带工具箱FDATool 也能很方便快速的实现滤波器的设计.另外FPGA.DS P等实现数字滤波器算法时,经常要用到滤波器系数,采用FDATool 工具箱也能快速的得到滤波器系数.二.实验平台 Matlab7.1三.实现步骤3.1 滤波器指标若需要设计一个16阶的FIR滤波器(h(0)=0),给定的参数如下:(1) 低通滤波器(2) 采样频率Fs 为48kHz ,滤波器Fc为10.8kHz(3) 输入序列位宽为9位(最高位为符号位)在

【转帖】MATLAB中用FDATool设计滤波器及使用

MATLAB中用FDATool设计滤波器及使用 该文章讲述了MATLAB中用FDATool设计滤波器及使用. 1. 在Matlab中键入fdatool运行Filter Design and Analysis Tool.具体使用请参见Matlab Help中的Signal Processing Toolbox->FDATool. 2. 在fdatool工具中应该注意的几个问题:(a)Fstop(阻带截止频率)不能大于或等于采样频率Fs/2,这是由于数字滤波器设计的方式决定的.(b)将设计好的滤波器

例说信号处理与滤波器设计

许多公式在转换时成了乱码,相应的word版本请点这里 目录 数字时代    2 数字信号处理的应用    3 频率——信号的指纹    5 卷积可以不卷    8 向量运算的启示    11 滤波器设计征程    16 最后一击——滤波的实现方法    22 纵览全局    27 数字时代 信号处理是对原始信号进行改变,以提取有用信息的过程,它是对信号进行变换.滤波.分析.综合等处理过程的统称.数字信号处理是将信号以数字方式表示并处理的理论和技术:模拟信号处理是指用模拟系统对模拟信号进行处理的方

FIR滤波器设计

FIR滤波器的优越性: 相位相应为严格的线性,不存在延迟失真,只有固定的时间延迟: 由于不存在稳定性问题,设计相对简单: 只包含实数算法,不涉及复数算法,不需要递推运算,长度为M,阶数为M-1,计算值约为M/2. 关于FIR滤波器的幅频特性和相频特性.在人们不关心相位时,可以让幅频特性常为正,原来为负的部分只需相位加上pi来补偿. 但当相位很重要,不允许随便增减时,幅频特性就必须区分正负.我们这里称为符幅特性. 符幅特性负值部分向上反褶就和我们平时看到的幅频特性一样,还是满足对称性的. 4类FI

记录。8,23之fir滤波器设计。

尝试设计FIR滤波器(低通,高通,带通),由5种频率组成的信号,傅里叶变换后的频谱上看,这个滤波器貌似很好. 滤波前信号频谱 低通滤波 高通滤波 带通滤波

VIVADO FIR滤波器设计与仿真(二)

VIVADO FIR滤波器设计与仿真(二) 在VIVADO FIR滤波器设计与仿真(一)中产生了两路正弦信号,频率分别为4MHz和5MHz,今天要进行FIR滤波器设计,在进行滤波器设计之前,需要对滤波器的参数进行设置,需要借助MATLAB软件或者Filter Solutions软件,这次使用Filter Solutions来进行参数设定. 关于Filter Solutions软件的使用,这里有一篇博客比较详细的介绍了它的用法,可以作为参考: Filter Solutions之滤波器设计 滤波器参

滤波器设计

来源:http://www.360doc.com/content/17/0518/21/1832721_655109467.shtml 滤波器设计概要 在信号系统领域,基于傅里叶变换的谱分析和滤波器设计是两个最基本的问题.在模拟系统中,常常用电子元件逼近所需的传递函数,而在数字系统中,则是用差分方程法去逼近所需传递函数.在硬件实现上,主要是用FPGA中的若干和积门来完成. 3.FIR滤波器设计 FIR滤波器很简单,它实际上是一个全零点模型(MA滑动平均模型),滤波器系数只包含滑动平均的B,而自回

菲果设计轻松打造高颜值的产品图【电商小白必收藏】

电商近几年爆发性增长,特别是以今日头条和腾讯广点通为平台的二类电商,常常爆出爆品.由于二类电商的成本低.收益高,商家纷纷瞄准这块蛋糕,但有的客户苦于没有设计团队,找第三方合作成本又高,那么小编用菲果在线设计软件,教你轻松DIY出高颜值的产品图,让你不在为设计望而却步. 菲果设计产品图 用菲果设计,打造高颜值产品图 说起产品图的重要性,无非有三个原因:第一,优质的产品图可以美化页面,能够与客户建立信任感:第二,产品图能够详细介绍宝贝的各种亮点,吸引客户购买:第三,相比简陋的图片,精心设计的图会让客