您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > matlab中关于数字滤波器的函数介绍
MATLAB下的数字信号处理实现示例一信号、系统和系统响应1、理想采样信号序列(1)首先产生信号x(n),0=n=50n=0:50;%定义序列的长度是50A=444.128;%设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001;%采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*n*T).*sin(w0*n*T);%pi是MATLAB定义的π,信号乘可采用“.*”closeall%清除已经绘制的x(n)图形subplot(3,1,1);stem(x);%绘制x(n)的图形title(‘理想采样信号序列’);(2)绘制信号x(n)的幅度谱和相位谱k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,1,3);stem(angX);title(‘理想采样信号序列的相位谱’)(3)改变参数为:1,0734.2,4.0,10==Ω==TAαn=0:50;%定义序列的长度是50A=1;%设置信号有关的参数a=0.4;T=1;%采样率w0=2.0734;x=A*exp(-a*n*T).*sin(w0*n*T);%pi是MATLAB定义的π,信号乘可采用“.*”closeall%清除已经绘制的x(n)图形subplot(3,1,1);stem(x);%绘制x(n)的图形title(‘理想采样信号序列’);k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,1,3);stem(angX);title(‘理想采样信号序列的相位谱’)2、单位脉冲序列在MatLab中,这一函数可以用zeros函数实现:n=1:50;%定义序列的长度是50x=zeros(1,50);%注意:MATLAB中数组下标从1开始x(1)=1;closeall;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,1,3);stem(angX);title(‘单位冲击信号的相位谱’)3、矩形序列n=1:50x=sign(sign(10-n)+1);closeall;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/25)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,1,3);stem(angX);title(‘单位冲击信号的相位谱’)4、特定冲击串:)3()2(5.2)1(5.2)()(−+−+−+=nnnnnxδδδδn=1:50;%定义序列的长度是50x=zeros(1,50);%注意:MATLAB中数组下标从1开始x(1)=1;x(2)=2.5;x(3)=2.5;x(4)=1;closeall;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,1,3);stem(angX);title(‘单位冲击信号的相位谱’)5、卷积计算:Σ+∞−∞=−=∗=mmnhmxnhnxny)()()()()(在MATLAB中。提供了卷积函数conv,即y=conv(x,h),调用十分方便。例如:系统:)3()2(5.2)1(5.2)()(−+−+−+=nnnnnhbδδδδ信号:500),sin()(0≤Ω=−nnTAetxnTaαn=1:50;%定义序列的长度是50hb=zeros(1,50);%注意:MATLAB中数组下标从1开始hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1;closeall;subplot(3,1,1);stem(hb);title(‘系统hb[n]’);m=1:50;%定义序列的长度是50A=444.128;%设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001;%采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*m*T).*sin(w0*m*T);%pi是MATLAB定义的π,信号乘可采用“.*”subplot(3,1,2);stem(x);title(‘输入信号x[n]’);y=conv(x,hb);subplot(3,1,3);stem(y);title(‘输出信号y[n]’);6、卷积定律验证k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X);%绘制x(n)的幅度谱subplot(3,2,1);stem(magX);title(‘输入信号的幅度谱’);angX=angle(X);%绘制x(n)的相位谱subplot(3,2,2);stem(angX);title(‘输入信号的相位谱’)Hb=hb*(exp(-j*pi/12.5)).^(n’*k);magHb=abs(Hb);%绘制hb(n)的幅度谱subplot(3,2,3);stem(magHb);title(‘系统响应的幅度谱’);angHb=angle(Hb);%绘制hb(n)的相位谱subplot(3,2,4);stem(angHb);title(‘系统响应的相位谱’)n=1:99;k=1:99;Y=y*(exp(-j*pi/12.5)).^(n’*k);magY=abs(Y);%绘制y(n)的幅度谱subplot(3,2,5);stem(magY);title(‘输出信号的幅度谱’);angY=angle(Y);%绘制y(n)的相位谱subplot(3,2,6);stem(angY);title(‘输出信号的相位谱’)%以下将验证的结果显示XHb=X.*Hb;Subplot(2,1,1);stem(abs(XHb));title(‘x(n)的幅度谱与hb(n)幅度谱相乘’);Subplot(2,1,2);stem(abs(Y);title(‘y(n)的幅度谱’);axis([0,60,0,8000])附录二用FFT进行信号的频谱分析1、高斯序列:⎪⎩⎪⎨⎧≤≤=−−elsenenxqpna,0150,)(2)(n=0:15;%定义序列的长度是15p=8;q=2;x=exp(-1*(n-p).^2/q);closeall;subplot(3,1,1);stem(abs(fft(x)))p=8;q=4;x=exp(-1*(n-p).^2/q);subplot(3,1,2);stem(abs(fft(x)))p=8;q=8;x=exp(-1*(n-p).^2/q);subplot(3,1,3);stem(abs(fft(x)))2、衰减正弦序列:⎩⎨⎧≤≤=−elsenfnenxnb,0150,2sin)(παn=0:15;%定义序列的长度是15a=0.1;f=0.0625;x=exp(-a*n).*sin(2*pi*f*n);closeall;subplot(2,1,1);stem(x);subplot(2,1,2);stem(abs(fft(x)))3、三角波序列:⎪⎩⎪⎨⎧≤≤−≤≤+=elsennnnnxc,074,830,1)(fori=0:3x(i)=i+1;x(i+4)=8-(i+4);endfori=8:15x(i)=0;endcloseall;subplot(2,1,1);stem(x);subplot(2,1,2);stem(abs(fft(x,16)))4、反三角序列:⎪⎩⎪⎨⎧≤≤−≤≤−=elsennnnnxd,074,330,4)(附录三窗函数法设计FIR滤波器一、在MATLAB中产生窗函数十分简单:(1)矩形窗(RectangleWindow)调用格式:w=boxcar(n),根据长度n产生一个矩形窗w。(2)三角窗(TriangularWindow)调用格式:w=triang(n),根据长度n产生一个三角窗w。(3)汉宁窗(HanningWindow)调用格式:w=hanning(n),根据长度n产生一个汉宁窗w。(4)海明窗(HammingWindow)调用格式:w=hamming(n),根据长度n产生一个海明窗w。(5)布拉克曼窗(BlackmanWindow)调用格式:w=blackman(n),根据长度n产生一个布拉克曼窗w。(6)恺撒窗(KaiserWindow)调用格式:w=kaiser(n,beta),根据长度n和影响窗函数旁瓣的β参数产生一个恺撒窗w。数值信号处理实例(续)基于窗函数的FIR滤波器设计利用MATLAB提供的函数firl来实现调用格式:firl(n,Wn,’ftype’,Window),n为阶数、Wn是截止频率(如果输入是形如[W1W2]的矢量时,本函数将设计带通滤波器,其通带为W1ωW2)、ftype是滤波器的类型(低通-省略该参数、高通-ftype=high、带阻-ftype=stop)、Window是窗函数。[例]设计一个长度为8的线性相位FIR滤波器。其理想幅频特性满足⎩⎨⎧≤≤=elseeHjd,04.00,1|)(|πωωWindow=boxcar(8);b=fir1(7,0.4,Window);freqz(b,1)Window=blackman(8);b=fir1(7,0.4,Window);freqz(b,1)[例]设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为W1=0.3π,w2=0.5πWindow=blackman(16);b=fir1(15,[0.30.5],Window);freqz(b,1)设计指标为:ωp=0.2πRp=0.25dBωa=0.3πAs=50dB的低通数字FIR滤波器wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;N=[0:1:M-1];wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(boxcar(M))’;h=hd.*w_ham;[db,mag,pha,grd,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)));As=-round(max(db(ws/delta_w+1:1:501)));Closeall;subplot(2,2,1);stem(hd);title(‘理想冲击响应’)axis([0M-1–0.10.3]);ylabel(‘hd[n]’);subplot(2,2,2);stem(w_ham);title(‘汉明窗’);axis([0M-101.1]);ylabel(‘w[n]’);subplot(2,2,3);stem(h
本文标题:matlab中关于数字滤波器的函数介绍
链接地址:https://www.777doc.com/doc-3998316 .html