基于matlab的时域信号处理.docx
文本预览下载声明
weilai基于matlab的信号处理lanren2013/5/9基于matlab的信号处理一.实验内容1代码1:%写一个产生单位冲激信号的函数 % function UnitImpulse(t1,t2,t0) % t1,t2信号的起止时刻,t0 冲激信号沿坐标的平移量function [x1]=UnitImpulse(t1,t2,t0) %绘制单位冲激信号,函数返回回后续调用准备n=t1:1:t2;x1=[(n-t0)==0];stem(n,x1,filled),grid on;title(单位冲激信号);axis([t1,t2,0,1.1])函数调用:UnitImpulse(-10,10,2)执行结果:结果分析:所得图形为单位冲激信号的2个单位的延时。代码2:%写一个产生阶跃信号u(t-t0)的函数%function UnitStep(t1,t2,t0)% t1,t2信号的起止时刻,t0 阶跃信号沿坐标的平移量function [x]=UnitStep(t1,t2,t0)%利用函数返回便于后续调用n=t1:1:t2;x=[(n-t0)=0];stem(n,x,filled,r),grid on;title(单位阶跃信号);axis([t1,t2,0,2])函数调用: UnitStep(-10,10,2)执行结果:结果分析:所得图形为延时两个单位的阶跃信号。代码3:%写一个产生离散复指数信号的函数%function ComplexExponential(n1,n2,r,w)%n1,n2信号的起止时间;r指数序列的底;w角频率function ComplexExponential(n1,n2,r,w)n=n1:1:n2;z=exp(j*w*r*n);rez=real(z);%求z的实部imz=imag(z);%求z的虚部subplot(2,1,1),stem(n,rez,filled,r),grid on;title(复指数信号z=exp(j*w*r*n)的实部);axis equal;subplot(2,1,2),stem(n,imz,filled,g),grid on;title(复指数信号z=exp(j*w*r*n)的虚部);axis equal;函数调用:ComplexExponential(-5,10,2,2)执行结果:结果分析:上图为复指数信号,由于无法直接用图形画出,故采用将其实部虚部分别画出。二.实验内容2代码1:%画出如下信号的波形%x[n]=3δ(n+3)+δ(n+2)+2δ(n+1)-4δ(n-1)+δ(n+2)-δ(n-3)function drawx(t1,t2)k=t1:1:t2;m=3*UnitImpulse(t1,t2,-3)+UnitImpulse(t1,t2,-2)+2*UnitImpulse(t1,t2,-1)l=-4*UnitImpulse(t1,t2,1)+2*UnitImpulse(t1,t2,-2)-3*UnitImpulse(t1,t2,3);p=m+l;%考虑到上述两式单独一个式子写太长,不好看。因此分为两个式子后相加stem(k,p,filled,y),grid on;axis([t1,t2,-5,5]);函数调用:drawx(-10,10)执行结果:结果分析:通过调用之前编写的函数UnitImpulse(t1,t2,t0)从而减少代码量,而且利用线性关系相加减得到上述图形。代码2:%用MATLAB实现卷积和%x[n]=1, -3≤n ≤3 h[n]=n, 0≤n ≤5 % 0, others 0, others%求y[n]=x[n]*h[n].function MYConvolution(t1,t2,a1,a2)%求卷积n=t1:1:t2;x=UnitStep(t1,t2,-3)-UnitStep(t1,t2,4);a=[n.*(n=a1)]; %要求h[n],先求a[n]=nu[n](a1≤n )b=[n.*(n=(a2+1))];%再求b[n]=nu[n](a2+1≤n )h=a-b; %输入信号h[n]=nu[n] (a1≤n≤a2)subplot(3,1,1),stem(n,x,filled,k),grid on,title(输入x[n]);subplot(3,1,2),stem(n,h,filled,b),grid on,title(单位冲激响应h[n]);z=conv(x,h);p=(2*t1):1:(2*t2); %卷积后z的长度subplot(3,1,3),stem(p,z,filled,r),grid on,title(输出y[n]);函数调用:MYConvolut
显示全部