您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > MATLAB常用函数
数字信号处理与MATLAB实现1.n1=[ns:nf];x1=[zeros(1,n0-ns),1,zeros(1,nf-n0)];%单位抽样序列的产生2.subplot(2,2,4)画2行2列的第4个图3.stem(n,x)%输出离散序列,(plot连续)4.编写子程序可调用4.1单位抽样序列)(0nn生成函数impseq.m[x,m]=impseq(n0,ns,nf);%序列的起点为ns,终点为nf,在n=n0点处生成一个单位脉冲n=[-5:5];x1=3*impseq(2,-5,5)-impseq(-4,-5,5)x1=0-1000003000n=[-5:5];x1=3*impseq(2,-4,5)-impseq(-4,-5,4)%起点到终点长度要一致x1=0-1000030004.2单位阶跃序列)(0nnu生成函数stepseq.m[x,n]=stepseq(no,ns,nf)%序列的起点为ns,终点为nf,在n=n0点处生成一个单位阶跃4.3两个信号相加的生成函数sigadd.m[y,n]=sigadd(x1,n1,x2,n2)4.4两个信号相乘的生成函数sigmult.m[y,n]=sigmult(x1,n1,x2,n2)4.5序列移位y(n)=x(n-n0)的生成函数sigshift.m[y,n]=sigshift(x,m,n0)4.6序列翻褶y(n)=x(-n)的生成函数sigfold.m[y,n]=sigfold(x,n)4.7evenodd.m函数可以将任一给定的序列x(n)分解为xe(n)和xo(n)两部分[xe,xo,m]=evenodd(x,n)4.8序列从负值开始的卷积conv_m,conv默认从0开始function[y,ny]=conv_m(x,nx,h,nh)有{x(n):nx1nnx2},{h(n):nh1nnh2},卷积结果序列为{y(n):nx1+nh1nnx2+nh2}例.设1132)(zzzX,1225342)(zzzzX,求)()()(21zXzXzY程序:x1=[1,2,3];n1=-1:1;x2=[2,4,3,5];n2=-2:1;[y,n]=conv_m(x1,n1,x2,n2)结果:y=2817231915n=-3-2-1012因此21231519231782)(zzzzzzY计算1121))9.01()9.01(()(zzzX,9.0z得Z反变换b=1;a=poly([0.90.9-0.9]);[r,p,k]=residuez(b,a)结果:r=0.25000.50000.2500p=0.90000.9000-0.9000k=[]因此得到,9.0125.0)9.01(5.09.0125.0)(1211zzzzX9.0z相应的)()9.0(25.0)1()9.0)(1(95)()9.0(25.0)(1nununnunXnnn5.[H,w]=freqz[B,A,M]计算出M个频率点上的频率响应,存放于H向量中,M个频率存放在w向量中,freqz函数自动将这M个频率点均匀设置在频率范围[0,]之间。若缺省w和M时,函数自动选取512个频率点计算。不带输出向量的freqz函数将自动绘制幅频和相频曲线。也可[H,w]=freqz(B,A);plot(w/pi,abs(H));绘出幅频特性6.zplane(z,p)绘制出列向量z中的零点(以符号o表示)和列向量p中的极点(以符号x表示)以及参考单位圆。7.傅里叶变换信号时域和频域变换连续对应着非周期,离散对应着周期。一个域的离散必然导致另一个域的周期延拓8.fft和ifft:一维快速傅里叶变换和逆傅里叶变换X=fft(x,N)采用FFT算法计算序列向量X的N点DFT,缺省N时,fft函数自动按X的长度计算DFT。当N为2的整数次幂时,fft按基2算法计算,否则用混合基算法。ifft的调用格式类似。9.fft2和ifft2:二维快速正傅里叶变换和逆傅里叶变换(1)Y=fft2(x)数据二维傅里叶变换参数X是向量fft2(x)相当于fft(fft(x)’)’,即先对X的列做一维傅里叶变换,然后再对变换结果的行作一维傅里叶变换;若X是向量,则此傅里叶变换即变成一维傅里叶变换fft;若X是矩阵,则是计算该矩阵的二位傅里叶变换。(2)Y=fft2(X,M,N)通过对X进行补零或截断,使得X成为(M*N)的矩阵。函数iff2的参数应用与函数fft2完全相同。10.czt:线形调频Z变换Y=czt(x,m,w,a)此函数计算由z=a*w.^(-(0:m-1))定义的z平面螺旋线上各点的z变换,a规定了起点,w规定了相邻点的比例,m规定了变换的长度,后三个变量默认值为a=1,w=exp(j*2*pi/m)及m=length(x)因此y=czt(x)就等于y=fft(x).11.dct和idct:离散余弦正变换和离散余弦逆变换Y=dct(x,N)完成如下变换,N的默认值为length(x).NnnknnxKY1))12(2cos()(2)(k=0,1,…,N-112.fftshiftY=fftshift(x)用来重新排列X=fft(x)的输出,当X为向量时,把X的左右两半进行交换,从而将零频分量移至频谱的中心;如果X为二维傅里叶变换的结果,它同时将X的左右和上下部分进行交换。13.fftfiltY=fftfilt(b,x)采用重叠相加法FFT对信号向量x快速滤波,得到输出序列向量y,向量b为FIR滤波的单位脉冲相应,h(n)=b(n+1),n=0,1,…,length(b)-1.Y=fftfilt(b,x,N)自动选取FFT长度NF=2^nextpow2(N),输入数据x分段长度M=NF-length(b)+1,其中nextpow2(N)函数求的一个整数,满足2^(nextpow2(N)-1)=N=2^nextpow2(N)N缺省时,fftfilt自动选择合适的FFT长度NF和对x的分段长度M。p=nextpow2(A),p满足2^p=abs(A)L=pow2(nextpow2(M+N-1))M,N分别为序列延拓周期14.用DFT进行谱分析时,必须将序列阶段为长度为N的有限长序列。造成频谱泄露和谱间干扰。泄露使频谱变得模糊,分辨率降低;旁瓣引起不同分量间的干扰。截断效应无法完全消除,可以加宽窗和缓慢截断。矩形窗比海明窗的频率分辨率高(泄漏小),但谱间干扰大,因此海明窗是以牺牲分辨率来换取谱间干扰的降低。栅栏效应是只能在离散点的地方看到真实的像,其余频谱被遮挡。为减少栅栏效应,可以在时域数据末端增加一些零点,使周期内点数增加,但不改变原有数据,即增加频域抽样点数N,频域抽样为kN2,这样必然使谱线更密,这样原来看不到的谱分量就可能看到了。15.x=[one(1,5),zero(1,N-5)];%单位阶跃信号y=filter(b,a,x)%直接型输出信号16.N=25;h=impz(b,a,N)%N次采样,b,a为零极点多项式系数,a不算1如:543214321421216118271131)(zzzzzzzzzzH%直接型b=[1,-3,11,27,18];a=[16,12,2,-4,-1])81.09.01)(5.01()4142136.11)(1(4)(211211zzzzzzzH%级联型b0=4;B=[1,1,0;1,-1.4142136,1];A=[1.-0.5.0;1.0.9.0.81]211211126243211214)(zzzzzzzH%并联型C=0;B=[-14,-12;24,26];A=[1,-2,3;1,-1,1]delta=impseq(0,0,N);x=[one(1,5),zero(1,N-5)];h=filter(b,a,delta);%直接型单位脉冲响应y=filter(b,a,x);%直接型输出信号h=casfilter(b0,B,A,delta);%级联型单位脉冲响应h=casfilter(b0,B,A,x);%级联型输出响应h=parfiltr(C,B,A,delta);%并联型单位脉冲响应h=parfiltr(C,B,A,x);%并联型输出响应[b0,B,A]=dir2cas(b,a);%直接型转换成级联型[b,a]=cas2dir(b0,B,A);%级联型转换成直接型[C,B,A]=dir2par(b,a);%直接型转换成并联型[b,a]=par2dir(C,B,A);%并联型转换成直接型17.buttord.m用来确定数字低通或模拟低通滤波器的阶次,其调用格式分别是(1)[N,Wn]=buttord(Wp,Ws,Rp,Rs)(2)[N,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)格式(1)对应数字滤波器,式中Wp,Ws分别是通带和阻带的截止频率,实际上它们是归一化频率,其值在0~1之间,1对应抽样频率的一半。对低通和高通滤波器,Wp,Ws都是标量,对带通和带阻滤波器,Wp,Ws都是12的向量。Rp,Rs分别是通带和阻带的衰减,单位为dB。N是求出的相应低通滤波器的阶次,Wn是求出的3dB频率,它和Wp稍有不同。格式(2)对应模拟滤波器,式中各个变量的含义和格式(1)相同,但Wp,Ws及Wn的单位为rad/s,因此,他们实际上是频率。18.buttap.m用来设计模拟低通原型滤波器G(p),其调用格式是[z,p,k]=buttap(N)N是与设计的低通原型滤波器的阶次,z,p和k分别是设计出的G(p)的极点、零点及增益。19.lp2lp.m,lp2hp.m,lp2bp.m,lp2bs.m以上4个文件的功能是将模拟低通原型滤波器G(p)分别转换为实际的低通、高通、带通及带阻滤波器。其调用格式分别为(1)[B,A]=lp2lp(b,a,Wo)或[B,A]=lp2hp(b,a,Wo)(2)[B,A]=lp2bp(b,a,Wo,Bw)或[B,A]=lp2bs(b,a,Wo,Bw)式中b,a分别是模拟低通原型滤波器G(p)的分子、分母多项式的系数向量,B,A分别是转换后的H(s)的分子、分母多项式的系数向量;在格式(1)中,Wo是低通或高通滤波器的截止频率;在格式(2)中Wo是带通或带阻滤波器的中心频率,Bw是其带宽。20.bilinear.m实现双线性变换,即由模拟滤波器H(s)得到数字滤波器H(z)。其调用格式是[Bz,Az]=bilinear(B,A,Fs)式中B,A分别是H(s)的分子、分母多项式的系数向量,Bz,Az分别是H(z)的分子、分母多项式的系数向量,Fs是抽样频率。21.butter.m用来直接设计巴特沃兹数字滤波器,实际上它把buttord.m,buttap.m,lp2lp.m及bilinear.m等文件都包含进去,从而使设计过程更简捷。其调用格式是(1)[B,A]=butter(N,Wn)(2)[B,A]=butter(N,Wn,’high’)(3)[B,A]=butter(N,Wn,’stop’)(4)[B,A]=butter(N,Wn,’s’)格式(1)~(3)用来设计数字滤波器,B、A分别是H(z)的分子、分母多项式的系数向量,Wn是通带截止频率,范围在0~1之间,1对应抽样频率的一半。若Wn是标量,则格式(1)用来设计低通数字滤波器,若Wn是12的向量,则格式(1)用来设计数字带通滤波器;格式(2)用来设计数字高通滤波器;格式(3)用来设计数字带阻滤波器,显然,这时的Wn是12的向量:格式(4)用来设计模拟滤波器。22.cheb1ord.m求切比雪夫1型滤波器的阶次。23.cheb1ap.m用来设计原型切比雪夫1型模拟滤波器。24.cheby1.m直接设计切比雪夫1型滤波器。以上3个文件的调用格式和对应的巴特沃兹滤波器的文件类似。25.impin
本文标题:MATLAB常用函数
链接地址:https://www.777doc.com/doc-5696731 .html