经典滤波器的MATLAB仿真源程序

经典滤波器的MATLAB仿真源程序
经典滤波器的MATLAB仿真源程序

经典滤波器的MATLAB仿真源程序

————————————————————————————————作者:————————————————————————————————日期:

1、%巴特沃斯低通模拟圆形滤波器

clear all;

n=0:0.01:2;

for i=1:4

switch i

case 1

N=2;

case 2

N=5;

case 3

N=10;

case 4

N=20;

end

[z,p,k]=buttap(N); %函数buttap--设计巴特沃斯低通滤波器

[b,a]=zp2tf(z,p,k); %函数zp2tf--零极点增益模型转换为传递函数模型[H,w]=freqs(b,a,n); %函数freqs--求解模拟滤波器频率响应

magH2=(abs(H)).^2; %函数abs--取模值函数

hold on %函数hold--控制是否保持当前图形

plot(w,magH2) %函数plot--画二维线性图

axis([0 2 0 1]); %函数axis--控制坐标轴比例和外观

end

xlabel('w/wc');

ylabel('|H(jw)|^2');

title('巴特沃斯低通模拟滤波器');

text(0.72,0.63,'N=2') %对不同曲线做标记

text(0.98,0.85,'N=20')

grid on;

2、%绘制切比雪夫I型低通模拟滤波器的平方幅频响应曲线,滤波器的阶数分别为2,4,6,8.

clear all;

n=0:0.01:2;

for i=1:4

switch i

case 1

N=2;

case 2

N=4;

case 3

N=6;

case 4

N=8;

end

Rs=10;

[z,p,k]=cheb1ap(N,Rs);

[b,a]=zp2tf(z,p,k);

[H,w]=freqs(b,a,n);

magH2=(abs(H)).^2;

posplot=['22' num2str(i)];

subplot(posplot)

plot(w,magH2)

axis([0 2 0 1]);

xlabel('w/wc');

ylabel('H(jw)^2');

title(['N=' num2str(N)]);

grid on

end

3、%切比雪夫II型低通模拟滤波器

clear all;

n=0:0.01:2;

for i=1:2

switch i

case 1

N=7;

case 2

N=8;

end

Rs=10; %阻带文波系数为10dB

[z,p,k]=cheb2ap(N,Rs); %函数cheb2---设计切比雪夫II型低通滤波器[b,a]=zp2tf(z,p,k);

[H,w]=freqs(b,a,n);

magH2=(abs(H)).^2;

%输出图形

posplot=['12' num2str(i)];

subplot(posplot)

plot(w,magH2)

axis([0 2 0 1.1]);

xlabel('w/wc');

ylabel('|H(jw)|^2');

title(['N=' num2str(N)]);

end

4、%运用冲击响应不变法设计一个低通Chebshev1型数字滤波器,其通带上限临界频率是3Hz,阻带临界频率是5H,采样频率是1000Hz,在通带内的最大衰减为0.3dB,阻带内的最小衰减为80dB。

MATLAB程序如下:

clc;

clear all;

%把数字滤波器的频率特征转换成模拟滤波器的频率特征

wp=300*2*pi;

ws=400*2*pi;

rp=0.3;

rs=80;

Fs=1000;

%选择滤波器的最小阶数。

[N,Wn]=cheb1ord(wp,ws,rp,rs,'s');

%创建Chebyshev1低通滤波器的原型

[Z,P,K]=cheb1ap(N,rp);

[A,B,C,D]=zp2ss(Z,P,K);

%实现低通向低通的转换

[AT,BT,CT,DT]=lp2lp(A,B,C,D,Wn);

[num1,den1]=ss2tf(AT,BT,CT,DT);

%运用冲击响应不变法把模拟滤波器转换成数字滤波器

[num2,den2]=impinvar(num1,den1,1000);

%绘出频率响应曲线

[H,W]=freqz(num2,den2);

plot(W*Fs/(2*pi),abs(H));

grid;

xlabel('幅值');

ylabel('频率');

title('冲击响应不变法低通滤波器');

clc;

clear all;

%把数字滤波器的频率特征转换成模拟滤波器的频率特征

wp=300*2*pi;

ws=400*2*pi;

rp=0.3;

rs=80;

Fs=1000;

%选择滤波器的最小阶数。

[N,Wn]=cheb1ord(wp,ws,rp,rs,'s');

%创建Chebyshev1低通滤波器的原型

[Z,P,K]=cheb1ap(N,rp);

[A,B,C,D]=zp2ss(Z,P,K);

%实现低通向低通的转换

[AT,BT,CT,DT]=lp2lp(A,B,C,D,Wn);

[num1,den1]=ss2tf(AT,BT,CT,DT);

%运用冲击响应不变法把模拟滤波器转换成数字滤波器[num2,den2]=impinvar(num1,den1,1000);

%绘出频率响应曲线

[H,W]=freqz(num2,den2);

plot(W*Fs/(2*pi),abs(H));

grid;

xlabel('幅值');

ylabel('频率');

title('冲击响应不变法低通滤波器');

5、%使用双线性Z变换设计一低通数字滤波器,使数字滤波器满足以下参数:采样频率Fs=1000HZ,通带临界频率fl =200Hz,通带内衰减小于1dB(αp=1);阻带临界频率fh=300Hz,阻带内衰减大于25dB(αs=25)。

FS=1000;

Fl=200;Fh=300; %通带、阻带截止频率

Rp=1;Rs=25;

wp=Fl*2*pi; %临界频率采用角频率表示

ws=Fh*2*pi; %临界频率采用角频率表示

wp1=wp/FS; %求数字频率

ws1=ws/FS; %求数字频率

OmegaP=2*FS*tan(wp1/2);%频率预畸

OmegaS=2*FS*tan(ws1/2);%频率预畸

%选择滤波器的最小阶数

[n,Wn]=buttord(OmegaP,OmegaS,Rp,Rs,'s'); %此处是代入经预畸变后获得的归一化模拟频率参数

[bt,at]=butter(n,Wn,'s'); % 设计一个n阶的巴特沃思模拟滤波器

[bz,az]=bilinear(bt,at,FS); %双线性变换为数字滤波器

[H,W] = freqz(bz,az); %求解数字滤波器的频率响应

plot(W*FS/(2*pi),abs(H));grid;

xlabel('频率/Hz');ylabel('幅值');

title('双线性Z变换设计低通数字滤波器')

求数字截止频率为rad c πω2.0=,通带内衰减不大于3dB,阻带起始频率为πω05.0=s rad ,阻带内衰减不小于48dB 。

wp=0.2*pi;ws=0.05*pi;Ap=3;As=48;

Wp=tan(wp/2);Ws=tan(ws/2);

[N,wn]=buttord(Wp,Ws,Ap,As,'s');

fprintf('滤波器阶数N=%.0f\n',N)

[b,a]=butter(N,1,'s');

[numa,dena]=lp2hp(b,a,Wp);

[numd,dend]=bilinear(numa,dena,0.5);

disp('分子系数b');

fprintf('%.4e ',numd);

fprintf('\n');

disp('分母系数a');

fprintf('%.4e ',dend);

fprintf('\n');

w=linspace(0,pi,1024);

h=freqz(numd,dend,w);

plot(w/pi,20*log10(abs(h)));

axis([0 1 -50 0]);grid;

xlabel('归一化频率');

ylabel('幅度/dB');

求抽样频率Fs=2000HZ,通带范围为300~400Hz,在带边频率处衰减不大于3dB,在200Hz以下和500Hz以上衰减不小于18dB。

Matlab程序如下:

clear all;

fp=[300 400];fs=[200 500];

rp=3; rs=18;

Fs=2000;

wp=fp*2*pi/Fs;

ws=fs*2*pi/Fs;

wap=2*Fs*tan(wp./2)

was=2*Fs*tan(ws./2);

[n,wn]=buttord(wap,was,rp,rs,'s');

[z,p,k]=buttap(n);

[bp,ap]=zp2tf(z,p,k)

bw=wap(2)-wap(1)

w0=sqrt(wap(1)*wap(2));

[bs,as]=lp2bp(bp,ap,w0,bw)

[h1,w1]=freqs(bp,ap);

figure(1)

plot(w1,abs(h1));grid;

ylabel('Bandpass AF and DF')

xlabel('Hz')

数字滤波器matlab的程序

数字滤波器matlab的源代码 function lvbo(Ua,Ub,choise) %参考指令:lvbo(2*pi,10*pi,1/0/-1) U1=min(Ua,Ub); U2=max(Ua,Ub); Us=16*U2; T=2*pi/Us; T_sum=4*max(2*pi/Ua,2*pi/Ub); sum=T_sum/T; t=T:T:T_sum; x=sin(U1*t)+0.8*sin(U2*t); X=DFT(x); figure(1); subplot(221) U=Us/sum:Us/sum:Us; stem(U,abs(X));grid on axis([Us/sum,Us/2,0,1.2*max(abs(X))]) title('原模拟信号采样频谱图') Ucd=U1+(U2-U1)*1/5;Usd=U2-(U2-U1)*1/5; switch choise case 1 Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); case -1 Hz_ejw=IIR_DF_CF(Ucd,1,Usd,30,T,sum); case 0 Hz_ejw=FIR_DF_HM(U1,U2,T,sum); otherwise Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); end Y=X.*Hz_ejw; y=1/sum*conj(DFT(conj(Y))); figure(1); subplot(224) plot(t,real(y)); title('模拟信号滤波后');grid on axis([0,T_sum,-max(real(y))*1.5,max(real(y))*1.5]) subplot(222); plot(t,x); hold on

matlab程序之——滤波器(带通-带阻)教学内容

m a t l a b程序之——滤波器(带通-带阻)

matlab程序之——滤波器(带通,带阻) 以下两个滤波器都是切比雪夫I型数字滤波器,不是巴特沃尔滤波器,请使用者注意! 1.带通滤波器 function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs) %带通滤波 %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半 %即,f1,f3,fs1,fsh,的值小于 Fs/2 %x:需要带通滤波的序列 % f 1:通带左边界 % f 3:通带右边界 % fs1:衰减截止左边界 % fsh:衰变截止右边界 %rp:边带区衰减DB数设置 %rs:截止区衰减DB数设置 %FS:序列x的采样频率 % f1=300;f3=500;%通带截止频率上下限 % fsl=200;fsh=600;%阻带截止频率上下限 % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值 % Fs=2000;%采样率 % wp1=2*pi*f1/Fs; wp3=2*pi*f3/Fs; wsl=2*pi*fsl/Fs; wsh=2*pi*fsh/Fs; wp=[wp1 wp3]; ws=[wsl wsh]; % % 设计切比雪夫滤波器; [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs); [bz1,az1]=cheby1(n,rp,wp/pi); %查看设计滤波器的曲线 [h,w]=freqz(bz1,az1,256,Fs); h=20*log10(abs(h));

figure;plot(w,h);title('所设计滤波器的通带曲线');grid on; y=filter(bz1,az1,x); end 带通滤波器使用例子 %-------------- %带通滤波器测试程序 fs=2000; t=(1:fs)/fs; ff1=100; ff2=400; ff3=700; x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t)+sin(2*pi*ff3*t); figure; subplot(211);plot(t,x); subplot(212);hua_fft(x,fs,1); % y=filter(bz1,az1,x); y=bandp(x,300,500,200,600,0.1,30,fs); figure; subplot(211);plot(t,y); subplot(212);hua_fft(y,fs,1); %调用到的hua_fft()函数代码如下 function hua_fft(y,fs,style,varargin) %当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么花幅值谱和功率谱 %当style=1时,还可以多输入2个可选参数 %可选输入参数是用来控制需要查看的频率段的 %第一个是需要查看的频率段起点 %第二个是需要查看的频率段的终点 %其他style不具备可选输入参数,如果输入发生位置错误 nfft= 2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动进算最佳FFT步长nfft) %nfft=1024;%人为设置FFT的步长nfft y=y-mean(y);%去除直流分量 y_ft=fft(y,nfft);%对y信号进行DFT,得到频率的幅值分布 y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。

完整的维纳滤波器Matlab源程序

完整的维纳滤波器Matlab源程序学术2009-11-20 20:31:58 阅读308 评论0 字号:大中小 完整的维纳滤波器Matlab源程序 clear;clc; %输入信号 A=1; %信号的幅值 f=1000; %信号的频率 fs=10^5; %采样频率 t=(0:999); %采样点 Mlag=100; %相关函数长度变量 x=A*cos(2*pi*f*t/fs); %输入正弦波信号 xmean=mean(x); %正弦波信号均值 xvar=var(x,1); %正弦波信号方差 xn=awgn(x,5); %给正弦波信号加入信噪比为20dB的高斯白噪声 figure(1) plot(t,xn) %绘制输入信号图像 title('输入信号图像') xlabel('x轴单位:t/s','color','b') ylabel('y轴单位:f/HZ','color','b') xnmean=mean(xn) %计算输入信号均值xnms=mean(xn.^2) %计算输入信号均方值xnvar=var(xn,1) %计算输入信号方差 Rxn=xcorr(xn,Mlag,'biased'); %计算输入信号自相关函数figure(2) subplot(221) plot((-Mlag:Mlag),Rxn) %绘制自相关函数图像 title('输入信号自相关函数图像') [f,xi]=ksdensity(xn); %计算输入信号的概率密度,f 为样本点xi处的概率密度 subplot(222) plot(xi,f) %绘制概率密度图像 title('输入信号概率密度图像') X=fft(xn); %计算输入信号序列的快速离散傅里叶变换 Px=X.*conj(X)/600; %计算信号频谱 subplot(223) semilogy(t,Px) %绘制在半对数坐标系下频

滤波器设计MATLAB

数字信号处理

第一章概述 《数字信号处理》课程是通信专业的一门重要专业基础课,是信息的数字化处理、存储和应用的基础。通过该课程的课程设计实践,使我们对信号与信息的采集、处理、传输、显示、存储、分析和应用等有一个系统的掌握和理解,巩固和运用在《数字信号处理》课程中所学的理论知识和实验技能,掌握数字信号处理的基础理论和处理方法,提高分析和解决信号与信息处理相关问题的能力,为以后的工作和学习打下基础。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。 其中,设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用

最广泛的是双线性变换法。 我们在课本中学到基本设计过程是: ①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; ②设计过渡模拟滤波器; ③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。 而MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter、cheby1 、cheby2 和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。 第二章总体方案设计 首先我将所给信号用MATLAB作图分析,然后通过观察st的幅频特性曲线,确定用高通滤波器作为处理信号的滤波器。选取滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB 为参数。 然后通过编程序调用MATLAB滤波器设计函数ellipord和ellip设计椭圆滤波器;通过编程序调用函数cheb1ord和cheby1设计切比雪夫滤波器,并绘图显示其幅频响应特性曲线。最后使用用滤波器实现函数filter,用两个滤波器分别对信号st进行滤波后绘图显示时域波形,观察滤波效果。 实验程序框图如图所示:

设计数字低通滤波器(用matlab实现)

DSP 设计滤波器报告 姓名:张胜男 班级:07级电信(1)班 学号:078319120 一·低通滤波器的设计 (一)实验目的:掌握IIR 数字低通滤波器的设计方法。 (二)实验原理: 1、滤波器的分类 滤波器分两大类:经典滤波器和现代滤波器。 经典滤波器是假定输入信号)(n x 中的有用成分和希望取出的成分各自占有不同的频带。这样,当)(n x 通过一个线性系统(即滤波器)后可讲欲去除的成分有效的去除。 现代滤波器理论研究的主要内容是从含有噪声的数据记录(又称时间序列)中估计出信号的某些特征或信号本身。 经典滤波器分为低通、高通、带通、带阻滤波器。每一种又有模拟滤波器(AF )和数字滤波器(DF )。对数字滤波器,又有IIR 滤波器和FIR 滤波器。 IIR DF 的转移函数是: ∑∑=-=-+==N k k k M r r r z a z b z X z Y z H 10 1)()()( FIR DF 的转移函数是: ∑-=-=10)()(N n n z n h z H FIR 滤波器可以对给定的频率特性直接进行设计,而IIR 滤波器目前最通用的方法是利用已经很成熟的模拟滤波器的设计方法进行设计。 2、滤波器的技术要求 低通滤波器: p ω:通带截止频率(又称通带上限频率) s ω:阻带下限截止频率 p α:通带允许的最大衰减 s α:阻带允许的最小衰减 (p α,s α的单位dB ) p Ω:通带上限角频率 s Ω:阻带下限角频率 (s p p T ω=Ω,s s s T ω=Ω)即 C p p F ωπ2=Ω C s s F ωπ2=Ω 3、IIR 数字滤波器的设计步骤:

Matlab在滤波器中的应用

MATLAB大作业 院(系):信息工程学院 专业:09通信工程 班级:通信一班 学生:钟锦慧 学号:20090610080118 指导教师:邹丹 2011年12月18日

MATLAB在滤波器设计中的应用 1. 绪论 从20世纪初至今,在通信与电子系统中,滤波器的研究和应用经历了漫长、艰辛而曲折的道路,滤波器在信号传输与信号处理中的重要地位和作用已经非常明显,所以滤波器的分析与设计更是应该重点研究的问题。滤波器,顾名思义,是对波进行过滤的器件。“波”是一个非常广泛的物理概念,在电子技术领域,“波”被狭义地局限于特指描述各种物理量的取值随时间起伏变化的过程。该过程通过各类传感器的作用,被转换为电压或电流的时间函数,称之为各种物理量的时间波形,或者称之为信号。因为自变量时间是连续取值的,所以称之为连续时间信号,又习惯地称之为模拟信号(Analog Signal)。随着数字式电子计算机(一般简称计算机)技术的产生和飞速发展,为了便于计算机对信号进行处理,产生了在抽样定理指导下将连续时间信号变换成离散时间信号的完整的理论和方法。也就是说,可以只用原模拟信号在一系列离散时间坐标点上的样本值表达原始信号而不丢失任何信息,波、波形、信号这些概念既然表达的是客观世界中各种物理量的变化,自然就是现代社会赖以生存的各种信息的载体。信息需要传播,靠的就是波形信号的传递。信号在它的产生、转换、传输的每一个环节都可能由于环境和干扰的存在而畸变,有时,甚至是在相当多的情况下,这种畸变还很严重,以致于信号及其所携带的信息被深深地埋在噪声当中了[。 2. MATLAB简介 2.1 MATLAB的概述 20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MA TLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MA TLAB推向市场。到20世纪90年代,MA TLAB已成为国际控制界的标准计算软件。 MA TLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MA TLAB和Simulink两大部分。 MA TLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测

高通滤波器matlab程序代码

%高斯低通滤波器 RGB=imread('132.jpg'); I0=rgb2gray(RGB); subplot(2,3,1),imshow(I0);title('原图'); I1=imnoise(I0,'gaussian');%对原图像加噪声 subplot(2,3,2),imshow(I1);title('加入噪声后') %将灰度图像的二维不连续Fourier变换的零频率成分移到频谱的中心 s=fftshift(fft2(I1)); subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift'); [M,N]=size(s);%分别返回s的行数到M中,列数到N中 %GLPF滤波 d0=50;%初始化d0 n1=floor(M/2);%对M/2进行取整 n2=floor(N/2);%对N/2进行取整 for i=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离 h(i,j)=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数

s(i,j)=h(i,j)*s(i,j);%GLPF滤波后的频域表示 end end s=ifftshift(s);%对s进行反FFT移动 %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数 s=uint8(real(ifft2(s))); subplot(2,3,4),imshow(h);title('传递函数');%显示GHPF滤波器的传递函数 subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)');%显示GLPF滤波处理后的图像

(整理)各类滤波器的MATLAB程序清单.

各类滤波器的MATLAB程序 一、理想低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r>0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=ifft2(Ya); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 二、理想高通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r<0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya);

Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong'); 三、B utterworth低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); D=0.3; r=f1.^2+f2.^2; n=4; for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=1/(t^n+1); end end Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');

matlab实现滤波器

虽然matlab提供了很多产生低通滤波器的函数,而且也提供了将低通转换为高通、带通等滤波器的方法函数,以及数字化的函数。但是为了简化设计及设计者方便考虑,matlab还提供了更为简便的产生各种滤波器的方法。 1 besself 功能:贝塞尔(Bessel)模拟滤波器设计。 格式:[b,a] = besself(n,Wn) [b,a] = besself(n,Wn,'ftype') [z,p,k] = besself(...) [A,B,C,D] = besself(...) 说明:besself函数可以设计模拟低通、高通、带通和带阻贝塞尔(Bessel)滤波器。 [b,a] = besself(n,Wn)返回截止频率为Wn(单位为弧度/秒)的n阶贝塞尔模拟 低通滤波器,b、a分别为滤波器传递函数的分子和分母系数向量(降幂排列)。 当Wn为二元向量,即Wn=[W1 W2] (W1

2 butter 功能:巴特沃思(Butterworth)模拟/数字滤波器设计。 格式:[b,a] = butter(n,Wn) [b,a] = butter(n,Wn,'ftype') [b,a] = butter(n,Wn,'s') [b,a] = butter(n,Wn,'ftype','s') [z,p,k] = butter(...) [A,B,C,D] = butter(...) 说明:butter函数可以设计模拟或数字的低通、高通、带通和带阻Butterworth 滤波 器。Butterworth滤波器可以使通带内的幅频响应最大程度地平坦,但这也使 得它的通带到阻带的过渡过程较慢。在这方面Chebyshev滤波器和椭圆滤波 器性能较好。 在设计数字滤波器时,butter函数中的参数Wn与besself函数有很大的区别, 它是一个相对量,其定义区间为Wn∈[0,1],其中1对应于0.5fs,fs为采样 频率(单位Hz);在设计模拟滤波器时,Wn采用真实频率,单位为Hz。 [b,a] = butter(n,Wn)返回截止频率为Wn(单位为弧度/秒)的n阶Butterworth 数字低通滤波器,b、a分别为滤波器传递函数的分子和分母系数向量(降幂 排列)。 当Wn为二元向量,即Wn = [W1 W2] (W1

matlab滤波器代码要点

数字信号处理: 已知通带截止频率fp=5kHz,通带最大衰减ap=2dB,阻带截止频率fs=2kHz,阻带最小衰减as=30dB,按照以上技术指标设计 巴特沃斯低通滤波器: wp=2*pi*5000;ws=2*pi*12000;Rp=2;As=30; [N,wc]=buttord(wp,ws,Rp,As,'s'); [B,A]=butter(N,wc,'s'); k=0:511;fk=0:14000/512:14000;wk=2*pi*fk; Hk=freqs(B,A,wk); subplot(2,2,1); plot(fk/1000,20*log10(abs(Hk)));grid on xlabel('频率(kHz)');ylabel('幅度(dB)') axis([0,14,-40,5]) 切比雪夫1型低通滤波器: wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60; [N1,wpl]=cheb1ord(wp,ws,Rp,As,'s'); %cheb1ord,里面的是1,不是L [B1,A1]=cheby1(N1,Rp,wpl,'s'); subplot(2,2,1); fk=0:12000/512:12000;wk=2*pi*fk; Hk=freqs(B1,A1,wk); plot(fk/1000,20*log10(abs(Hk)));grid on xlabel('频率(kHz)');ylabel('幅度(dB)') axis([0,12,-70,5]) 椭圆模拟低通滤波器: wp=2*pi*3000;ws=2*pi*12000;Rp=0.1;As=60; [N,wpo]=ellipord(wp,ws,Rp,As,'s'); [B,A]=ellip(N,Rp,As,wpo,'s'); subplot(2,2,1); fk=0:12000/512:12000;wk=2*pi*fk; Hk=freqs(B1,A1,wk); plot(fk/1000,20*log10(abs(Hk)));grid on xlabel('频率(kHz)');ylabel('幅度(dB)') axis([0,12,-70,5])

matlab设计滤波器程序

Fs=1000; t=0.1:1/Fs:0.3; A=1; B=fir1(100,[0.12 0.18],'bandpass');%fir1基于窗函数的有限脉冲响应滤波器 X=3*sin(2*pi*80*t)+sqrt(5)*randn(1,length(t)); subplot(2,2,1) plot(t,X) title('叠加白噪声的正弦信号') xlabel('time (seconds)') X1=3*sin(2*pi*80*t); subplot(2,2,2) plot(t,X1) title('正弦信号') xlabel('time (seconds)') Y=filter(B,A,X); subplot(2,2,3) plot(t,Y) title('Hamming窗滤波后的信号') xlabel('time (seconds)') B=fir1(100,[0.12 0.18],'bandpass',kaiser(101)); Y1=filter(B,A,X); subplot(2,2,4) plot(t,Y1) title('bartlett窗滤波后的信号') xlabel('time (seconds)') B=fir1(100,[0.12 0.18],'bandpass',barthannwin(101)); Y2=filter(B,A,X); subplot(2,2,4) plot(t,Y1) title('barthannwin窗滤波后的信号') xlabel('time (seconds)') figure(2) Xk=fft(X1); Mk=abs(Xk); subplot(2,2,1) stem(Mk)

高通滤波器matlab程序代码

%高斯低通滤波器 RGB = imread('132.jpg'); I0 = rgb2gray(RGB); subplot(2,3,1),imshow(I0);title('原图'); I1 = imnoise(I0,'gaussian'); %对原图像加噪声 subplot(2,3,2),imshow(I1);title('加入噪声后') %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心 s=fftshift(fft2(I1)); subplot(2,3,3),imshow(log(1+abs(s)),[]);title('fftshift'); [M,N]=size(s); %分别返回s的行数到M中,列数到N中 %GLPF滤波 d0=50; %初始化d0 n1=floor(M/2); %对M/2进行取整 n2=floor(N/2); %对N/2进行取整 fori=1:M for j=1:N d=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h(i,j)=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数

s(i,j)=h(i,j)*s(i,j); %GLPF滤波后的频域表示 end end s=ifftshift(s); %对s进行反FFT移动 %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数 s=uint8(real(ifft2(s))); subplot(2,3,4),imshow(h);title('传递函数'); %显示GHPF滤波器的传递函数 subplot(2,3,5),imshow(s);title('GLPF滤波(d0=50)'); %显示GLPF滤波处理后的图像

经典滤波器的MATLAB仿真源程序

1、%巴特沃斯低通模拟圆形滤波器 clear all; n=0:0.01:2; for i=1:4 switch i case 1 N=2; case 2 N=5; case 3 N=10; case 4 N=20; end [z,p,k]=buttap(N); %函数buttap--设计巴特沃斯低通滤波器 [b,a]=zp2tf(z,p,k); %函数zp2tf--零极点增益模型转换为传递函数模型[H,w]=freqs(b,a, n); %函数freqs--求解模拟滤波器频率响应 magH2=(abs(H)).A2; %函数abs--取模值函数 hold on %函数hold--控制是否保持当前图形 plot(w,magH2) %函数plot--画二维线性图 axis([0 2 0 1]); %函数axis--控制坐标轴比例和外观 end xlabel('w/wc'); ylabel('|H(jw)$2'); title('巴特沃斯低通模拟滤波器'); text(0.72,0.63,'N=2') %对不同曲线做标记 text(0.98,0.85,'N=20') grid on; 2、%绘制切比雪夫I型低通模拟滤波器的平方幅频响应曲线,滤波器的阶数分别为2,4,6,8.

clear all; n=0:0.01:2; for i=1:4 switch i case 1 N=2; case 2 N=4; case 3 N=6; case 4 N=8; end Rs=10; [z,p,k]=cheb1ap(N,Rs); [b,a]=zp2tf(z,p,k); [H,w]=freqs(b,a, n); magH2=(abs(H)).A2; posplot=['22' nu m2str(i)]; subplot(posplot) plot(w,magH2) axis([0 2 0 1]); xlabel('w/wc'); ylabel('H(jw)A2'); title(['N=' nu m2str(N)]); grid on end 3、%切比雪夫II型低通模拟滤波器 clear all; n=0:0.01:2; for i=1:2 switch i

基于MATLAB的数字滤波器

一、引言: 在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而系统电压电流信号(尤其是故障瞬变过程)中混有各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件【1】。目前微机保护和二次信号处理软件主要采用数字滤波器。传统的数字滤波器设计使用繁琐的公式计算,改变参数后需要重新计算,在设计滤波器尤其是高阶滤波器时工作量很大。利用MATLAB信号处理工具箱(Signal Pro cessing Toolbox)可以快速有效的实现数字滤波器的设计与仿真。 关键词:数字滤波器 MATLAB FIR IIR 1 数字滤波器及传统设计方法 数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。 IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。FIR数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。 在对滤波器实际设计时,整个过程的运算量是很大的。例如利用窗函数法【2】设计M 阶FIR低通滤波器时,首先要根据(1)式计算出理想低通滤波器的单位冲激响应序列,然后根据(2)式计算出M个滤波器系数。当滤波器阶数比较高时,计算量比较大,设计过程中改变参数或滤波器类型时都要重新计算。 (1) (2) 设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。

Matlab实现滤波器

滤波器设计示例 1、Matlab 设计IIR 基本示例 (1) (1)直接设计数字滤波器 (1) (2)脉冲相应不变法 (2) (3)双线性变换 (2) (4)双线形变换法设计chebyshev 高通滤波器 (3) (5)使用MatLab6 下的Filter Designed Tool (4) 2、Matlab 设计IIR 高级示例 (4) (1)双线性变换实现ButterWorth 低通 (4) (2)双线性变换法实现Chebyshev 低通(I 型) (5) (3)低通变换为高通 (6) (2)低通变换为带通 (7) (3)低通变换为带通(双线性变换) (8) 3、Matlab 窗函数设计FIR 滤波器基本示例 (9) (1)低通滤波器实现 (9) (2)带通滤波器实现 (9) 1、Matlab设计IIR基本示例[返回] (1)直接设计数字滤波器[返回] 低通,采样频率为1Hz,通带临界频率f p =0.2Hz,通带内衰减小于1dB(αp=1);阻 带临界频率f s=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。% Matlab 使用归一化的频率参数(临界频率除以采样频率的1/2)。 %这样临界频率参数的取值范围在0 和1 之间,1 代表Fs/2(用角频率表示的时候对应π)FS=1 [n,Wn]=buttord(0.2/(FS/2),0.3/( FS /2),1,25); [b,a]=butter(n,Wn); freqz(b,a,512, FS);

(2)脉冲相应不变法[返回] 低通,采样频率为1Hz,通带临界频率f p =0.2Hz,通带内衰减小于1dB(αp=1);阻 带临界频率f s=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。 FS=1 [n,Wn]=buttord(0.2*2*pi,0.3*2*pi,1,25,'s'); %临界频率采用角频率表示 [b,a]=butter(n,Wn,'s'); %freqs(b,a) %设计模拟的 [bz,az]=impinvar(b,a,FS); %映射为数字的 freqz(bz,az,512,FS) (3)双线性变换[返回] 低通,采样频率为1Hz,通带临界频率f p =0.2Hz,通带内衰减小于1dB(αp=1);阻 带临界频率f s=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。 FS=1 %通带、阻带截止频率 Fl=0.2;Fh=0.3; %频率预畸 wp=(Fl/FS)*2*pi; %临界频率采用角频率表示 ws=(Fh/FS)*2*pi; %临界频率采用角频率表示 OmegaP=2*FS*tan(wp/2); OmegaS=2*FS*tan(ws/2); [n,Wn]=buttord(OmegaP,OmegaS,1,25,'s'); [b,a]=butter(n,Wn,'s'); %freqs(b,a) %设计模拟的 [bz,az]=bilinear(b,a,FS); %映射为数字的 freqz(bz,az,512,FS,'whole')

基于matlab各滤波器源代码

汉明窗的FIR低通滤波: Fs=22050; [x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');%G:\Users\DP\Desktop \SoundTest.wav G:\Users\DP\Desktop\好铃网-湖人掘金宣传片.wav x=x(:,1); figure(1); subplot(2,1,1); plot(x); %sound(x,FS,bits); %回放语音 title('语音信号时域波形图') y=fft(x,3260); f=(FS/3260)*[1:1630]; subplot(2,1,2); plot(f(1:1630),abs(y(1:1630))); title('语音信号频谱图'); %产生噪声信号并加到语音信号 t=0:length(x)-1; zs0=0.05*cos(2*pi*100*t/22050); figure(2); subplot(2,1,1) plot(zs0) title('噪声信号波形'); zs1=fft(zs0,1200); %sound(zs0,FS,bits);%回放噪音 f=(FS/1200)*[1:600]; subplot(2,1,2) plot(f(1:600),abs(zs1(1:600))); title('噪声信号频谱');

%sound(x1,FS,bits); %回放加入噪声后的语音 y1=fft(x1,1200); figure(3); subplot(2,1,1);plot(x1); f=(FS/1200)*[1:600]; subplot(2,1,2); plot(f(1:600),abs(y1(1:600))); title('加入噪声后的信号波形'); title('加入噪声后的信号频谱'); %加窗滤波 wp=0.25*pi; ws=0.3*pi; wdelta=ws-wp; N=ceil(6.6*pi/wdelta); %取整 t=0:(size(x1)-1); wn=(0.2+0.3)*pi/2; b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率f1=fftfilt(b,x1); figure(4) freqz(b,1,512) [h1,w1]=freqz(b,1); plot(w1*FS/(2*pi),20*log10(abs(h1))); figure(5) subplot(2,1,1) plot(t,x1) title('滤波前的时域波形'); subplot(2,1,2)

各类滤波器的MATLAB程序清单

各类滤波器的MATLAB程序清单

各类滤波器的MATLAB程序 一、理想低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r>0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=ifft2(Ya); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong') ; 二、理想高通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); Hd=ones(size(IA)); r=sqrt(f1.^2+f2.^2); Hd(r<0.2)=0; Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd;

Ya=ifftshift(Ya); Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong') ; 三、B utterworth低通滤波器 IA=imread('lena.bmp'); [f1,f2]=freqspace(size(IA),'meshgrid'); D=0.3; r=f1.^2+f2.^2; n=4; for i=1:size(IA,1) for j=1:size(IA,2) t=r(i,j)/(D*D); Hd(i,j)=1/(t^n+1); end end Y=fft2(double(IA)); Y=fftshift(Y); Ya=Y.*Hd; Ya=ifftshift(Ya); Ia=real(ifft2(Ya)); figure subplot(2,2,1),imshow(uint8(IA)); subplot(2,2,2),imshow(uint8(Ia)); figure

完整的维纳滤波器Matlab源程序

clear;clc; %输入信号 A=1; %信号的幅值f=1000; %信号的频率 fs=10^5; %采样频率 t=(0:999); %采样点 Mlag=100; %相关函数长度变量 x=A*cos(2*pi*f*t/fs); %输入正弦波信号xmean=mean(x); %正弦波信号均值xvar=var(x,1); %正弦波信号方差 xn=awgn(x,5); %给正弦波信号加入信噪比为20dB的高斯白噪声 figure(1) plot(t,xn) %绘制输入信号图像 title('输入信号图像') xlabel('x轴单位:t/s','color','b') ylabel('y轴单位:f/HZ','color','b') xnmean=mean(xn) %计算输入信号均值xnms=mean(xn.^2) %计算输入信号均方值xnvar=var(xn,1) %计算输入信号方差 Rxn=xcorr(xn,Mlag,'biased'); %计算输入信号自相关函数 figure(2) subplot(221) plot((-Mlag:Mlag),Rxn) %绘制自相关函数图像 title('输入信号自相关函数图像') [f,xi]=ksdensity(xn); %计算输入信号的概率密度,f为样本点xi处的概率密度 subplot(222) plot(xi,f) %绘制概率密度图像 title('输入信号概率密度图像') X=fft(xn); %计算输入信号序列的快速离散傅里叶变换 Px=X.*conj(X)/600; %计算信号频谱subplot(223) semilogy(t,Px) %绘制在半对数

matlab【滤波器】程序

matlab滤波器程序 wc=(400/1000)*pi; %求截止频率 w1=boxcar(81); %窗函数 w2=triang(81); w3=hamming(81); w4=hanning(81); w5=bartlett(81); w6=blackman(81); w7=chebwin(81,30); w8=kaiser(81,7.856); n=1:1:81; hd=sin(wc*(n-41))./(pi*(n-41)); %求h(d) hd(41)=wc/pi; h1=hd.*w1'; %加窗 h2=hd.*w2'; h3=hd.*w3'; h4=hd.*w4'; h5=hd.*w5'; h6=hd.*w6'; h7=hd.*w7'; h8=hd.*w8'; [mag1,rad]=freqz(h1); %求幅频特性曲线 [mag2,rad]=freqz(h2); [mag3,rad]=freqz(h3); [mag4,rad]=freqz(h4); [mag5,rad]=freqz(h5); [mag6,rad]=freqz(h6); [mag7,rad]=freqz(h7); [mag8,rad]=freqz(h8); figure(1); %画幅频特性曲线 plot(rad,20*log10(abs(mag1))); xlabel('Normalized Frequency(rad)'); ylabel('Normaliaed Magnitude(dB)'); axis([0,3,-80,0]); title('利用矩形窗设计的数字滤波器'); grid on; figure(2); plot(rad,20*log10(abs(mag2)));

相关文档
最新文档