您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > matlab在信号处理中的应用
1MATLAB在信号分析中的应用MATLAB语言2本章目标•熟悉MATLAB软件平台、工具箱、高效的数值计算及符号计算功能;•熟悉MATLAB软件的信号处理编程方法和结果的可视化;•了解数字信号处理的计算机仿真方法;•进一步加深对信号与系统的基本原理、方法及应用的理解。MATLAB语言3主要内容•7.1基本信号的表示及可视化•7.2连续信号的时域运算与时域变换•7.3线性系统的时域分析•7.4连续时间信号的频域分析•7.5连续系统的复频域分析•7.6信号采样与重构MATLAB语言47.1基本信号的表示及可视化利用Matlab软件信号处理工具箱(SignalProcessingToolbox)中的专用函数产生信号并绘出波形。产生正弦波t=0:0.01:3*pi;y=sin(2*t);plot(t,y)产生矩形脉冲信号t=-3:0.01:3;y=rectpuls(t-1,2);%以t=1为中心,宽度为2plot(t,y)MATLAB语言5产生周期方波t=0:0.01:1;y=square(4*pi*t);plot(t,y)产生周期锯齿波t=0:0.001:2.5;y=sawtooth(2*pi*30*t);plot(t,y)axis([00.2-11])产生指数函数波形x=linspace(0,1);%x=0:0.01:1;y=exp(-x);plot(x,y)MATLAB语言6产生抽样信号t=-10:1.5:10;%向量t时间范围t=t1:p:t2,p为时间间隔f=sinc(t);%sinc(t)=sin(pi*t)/pi*tplot(t,f);%显示该信号的时域波形title('f(t)=Sa(t)');xlabel('t')axis([-10,10,-0.4,1.1])产生单位阶跃信号定义阶跃函数functionf=heaviside(t)f=(t0);调用阶跃函数t=-1:0.01:3;f=heaviside(t);plot(t,f);axis([-1,3,-0.2,1.2]);1000tttMATLAB语言7产生单位冲激信号定义冲激函数functionchongji(t1,t2,t0)dt=0.01;t=t1:dt:t2;n=length(t);x=zeros(1,n);x(1,(-t0-t1)/dt+1)=1/dt;%表示在t=t+t0时刻存在冲激stairs(t,x);axis([t1,t2,0,1.2/dt]);title('单位冲击信号δ(t)')调用chongji(-1,5,0);可以试着给别的t1,t2,t0.10,0tdtttMATLAB语言87.2连续信号的时域运算与时域变换1.加(减)、乘运算要求二个信号序列长度相同.t=0:0.01:2;f1=exp(-3*t);f2=0.2*sin(4*pi*t);f3=f1+f2;f4=f1.*f2;subplot(2,2,1);plot(t,f1);title('f1(t)');subplot(2,2,2);plot(t,f2);title('f2(t)');subplot(2,2,3);plot(t,f3);title('f1+f2');subplot(2,2,4);plot(t,f4);title('f1*f2');MATLAB语言92.用matlab的符号函数实现信号的反折、移位、尺度变换.由f(t)到f(-at+b)(a0)步骤:f(t)f(tb)f(atb)f(atb)移位尺度反折MATLAB语言10例:已知f(t)=sin(t)/t,试通过反折、移位、尺度变换由f(t)得到f(-2t+3)的波形.symst;f=sin(t)/t;%定义符号函数f(t)=sin(t)/tf1=subs(f,t,t+3);%对f进行移位f2=subs(f1,t,2*t);%对f1进行尺度变换f3=subs(f2,t,-t);%对f2进行反褶subplot(2,2,1);ezplot(f,[-8,8]);gridon;%ezplot是符号函数绘图命令subplot(2,2,2);ezplot(f1,[-8,8]);gridon;subplot(2,2,3);ezplot(f2,[-8,8]);gridon;subplot(2,2,4);ezplot(f3,[-8,8]);gridon;注:也可用一条指令:subs(f,t,-2*t+3)实现f(t)到f(-2t+3)的变换MATLAB语言11例:已知信号用matlab求f(t+2),f(t-2),f(-t),f(2t),-f(t),并绘出时域波形。symstf=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))');subplot(2,3,1);ezplot(f,[-3,3]);y1=subs(f,t,t+2);subplot(2,3,2),ezplot(y1,[-5,1]);y2=subs(f,t,t-2);subplot(2,3,3),ezplot(y2,[-1,5]);y3=subs(f,t,-t);subplot(2,3,4),ezplot(y3,[-3,3]);y4=subs(f,t,2*t);subplot(2,3,5),ezplot(y4,[-2,2]);y5=-f;subplot(2,3,6),ezplot(y5,[-3,3])1222tftttMATLAB语言123.卷积运算Y=conv(x,h)实现x,h二个序列的卷积.例:求二个信号的卷积.t11=0;t12=1;t21=0;t22=2;t1=t11:0.001:t12;ft1=2.*rectpuls(t1-0.5,1);subplot(2,2,1);plot(t1,ft1);axis([0304])t2=t21:0.001:t22;ft2=t2;subplot(2,2,2);plot(t2,ft2);axis([0304])t3=t11+t21:0.001:t12+t22;ft3=conv(ft1,ft2)ft3=ft3*0.001subplot(2,2,3);plot(t3,ft3);axis([0304])12,01()0,tftelse2,020,ttftelseMATLAB语言137.3线性系统的时域分析1.脉冲响应impulse(num,den,T)y=impulse(num,den,T)T:为等间隔的时间向量,指明要计算响应的时间点.2.阶跃响应step(num,den,T)y=step(num,den,T)T:为等间隔的时间向量,指明要计算响应的时间点.3)对任意输入的响应lsim(num,den,U,T)y=lsim(num,den,U,T)U:任意输入信号.T:为等间隔的时间向量,指明要计算响应的时间点.MATLAB语言14例:已知描述某连续系统的微分方程为:试用Matlab绘出该系统冲激响应和阶跃响应;输入信号为,该系统零状态响应y(t)。b=[12];a=[121];subplot(1,3,1);impulse(b,a);%冲激响应subplot(1,3,2);step(b,a)%阶跃响应p=0.5;%定义取样时间间隔t=0:p:5;%定义时间范围x=exp(-2*t);%定义输入信号subplot(1,3,3);lsim(b,a,x,t);%对系统的输出信号进行仿真''''22ytytytftft2tftetMATLAB语言15例:对系统分别求脉冲响应、阶跃响应及对输入u(t)=sin(t)的响应.num=[1,1];den=[1,1.3,0.8];T=0:0.1:3;y1=impulse(num,den,T);y2=step(num,den,T);U=sin(T);y3=lsim(num,den,U,T);subplot(1,3,1);plot(T,y1);title('脉冲响应')subplot(1,3,2);plot(T,y2);title('阶跃响应')subplot(1,3,3);plot(T,y3);title('输入为u=sint的响应')21()1.30.8sHsssMATLAB语言167.4连续时间信号的频域分析1.连续信号的傅立叶变换信号的傅立叶变换定义为:()()jtFjftedt()()jtftFjedMATLAB语言17(1)符号解法调用函数:fourier、ifourier例:求函数的傅立叶变换。symstF=fourier(exp(-2*abs(t)))F=4/(4+w^2)例:求傅立叶逆变换symstwf=ifourier(1/(1+w^2),t)f=1/2*exp(-t)*Heaviside(t)+1/2*exp(t)*Heaviside(-t)2()tfte21()1FjMATLAB语言18例:设,画出f(t)及其幅频谱。symst;f=1/2*exp(-2*t)*sym('Heaviside(t)');F=fourier(f);subplot(211);ezplot(f);subplot(212);ezplot(abs(F))符号解法的局限:•运算结果是符号表达式,必须使用ezplot来作图。如果结果中含有冲激函数等项,那么ezplot无法作图。•返回结果有可能包含一些不能直接表达的式子,甚至会出现“未被定义函数或变量”项,更加无法作图。•很多场合,尽管连续,但却不可能表示成符号表达式。21()()2tftet()ftMATLAB语言19(2)数值解法从定义出发:•用MATLAB作数值计算,它不能计算无限区间。可以根据波形情况,确定积分上下限,将t分N等份,用求和代替积分。0()()lim()jtjnnFjftedtfne121'12()()[(),(),...()][,,...]iNNjtiijtjtjtNFjfteftftfteeeMATLAB语言20•同样,在频域内也是取一系列的样本点,然后计算出不同w处的F值,然后就得到了傅立叶变换的数值解。而不同w处的F值都用上面同一个公式计算,因此可以使用MATLAB的矩阵计算功能。将w设为一个行向量,则:•其中,F是与w等长的行向量,t'是列向量,w是行向量,t'*w是一个矩阵,其行数与t相同,列数与w相同。*exp(*'*)*FfjtwdtMATLAB语言21例:求门信号的傅立叶变换。dt=0.02;tao=2;t=-tao:dt:tao;f=Heaviside(t+1)-Heaviside(t-1);w1=10*pi;N=500;k=0:N;w=k*w1/N;F=f*exp(-j*t'*w)*dt;F=real(F);w=[-fliplr(w),w(2:501)];%双边谱F=[fliplr(F),F(2:501)];subplot(211),plot(t,f)subplot(212),plot(w,F)211()()01tftgttMATLAB语言222.频响特性——系统在正弦激励下稳态响应随信号频率变化的特性.|H(j)|:幅频响应特性.():相频响应特性(或相移特性).Matlab求系统频响特性函数——freqs的调用格式:h=freqs(num,den,)为等间隔的角频率向量,指明要计算响应的频率点.)()()()(jjsejHsHjHMATLAB语言23例:求系统的频响特性.num=[1,1];den=[1,1.3,0.8];W=0:0.1:100;h=freqs(num,den,W);subplot(2,1,1);plot(W,abs(
本文标题:matlab在信号处理中的应用
链接地址:https://www.777doc.com/doc-2881953 .html