资源描述:
《matlab在信号处理中的应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第4章MATLAB在信号处理中的应用4.1信号及其表示4.2信号的基本运算4.3信号的能量和功率4.4线性时不变系统4.5线性时不变系统的响应4.6线性时不变系统的频率响应4.7傅里叶(Fourier)变换4.8IIR数字滤波器的设计方法4.9FIR数字滤波器设计4.1信号及其表示4.1.1连续时间信号的表示在MATLAB中,对连续时间信号用采样点的数据来表示,当采样点很密时可看成连续信号。连续时间信号:时间变化连续。如y=x(t)离散时间信号(序列):时间离散,如x(nT)=x(t)
2、t=nT.当T足够小时,可以认为是连续信号。例如
3、:用MATLAB命令绘出关于t的曲线,t的范围为0~30s,并以0.1递增。t=0:0.1:30;%对时间变量赋值x=exp(-0.707*t).*sin(2/3.*t);%计算变量所对应的函数值plot(t,x);%绘制函数曲线grid;%图形窗口加网格xlabel('time(sec)');%标注x轴,y轴ylabel('x(t)');axis([-0.05,30,-0.05,0.35]);%确定x轴,y轴显示范围函数名格式功能sawtoothSawtooth(t,width)产生锯齿波或三角波信号(周期为2,幅值-1~1)squ
4、areSquare(t,duty)产生方波信号(周期为2,幅值-1~1)sincSinc(x)产生sinc函数波形chirpchirp(t,f0,t1,f1,’method’,phi)产生线性调频扫频信号gauspulsgauspuls(T,FC,BW,BWR)产生高斯正弦脉冲信号vcovoc(x,fc,fs)电压控制振荡器pulstranpulstran(t,d,’func’)产生冲激串rectpulerectpule(t,w)产生非周期的方波信号tripulstripuls(t,w)产生非周期的三角波信号diricdiric(x,
5、n)产生Dirichlet或周期sinc函数gmonopulsgmonopuls(t,fc)产生高斯单脉冲信号4.1.2工具箱中的信号产生函数t=0:0.0001:1;x1=sawtooth(2*pi*50*t,0.8)plot(t,x1)axis([0,0.2,-1,1])t=0:0.0001:0.05;x1=square(2*pi*50*t,50)plot(t,x1)例如:产生周期为0.02的三角波产生频率为50Hz,占空比为50%的方波t=0:0.001:2y=chirp(t,0,1,150)figure(1)plot(t,y)
6、axis([0,0.5,0,1])产生线性调频信号:t=0:0.01:1;y1=tripuls(t);y2=tripuls(t,0.6);subplot(211);plot(t,y1);subplot(212);plot(t,y2);产生非周期三角波信号:4.1.3离散时间信号的表示在MATLAB中,离散时间信号x(n)的表示:需用一个向量x表示序列幅值,用另一个等长的定位时间变量n,才能完整地表示一个序列。[例4-10]绘制离散时间信号的棒状图。其中x(-1)=-1,x(0)=1,x(1)=2,x(2)=1,x(3)=-1,x(4)
7、=0。MATLAB源程序为:n=-3:5;%定位时间变量x=[0,0,-1,1,2,1,-1,0,0];stem(n,x);grid;%绘制棒状图line([-3,5],[0,0]);%画x轴线xlabel('n');ylabel('x[n]')运行结果如图4.11所示。图4.11离散时间信号图形4.1.4几种常用离散时间信号的表示1.单位脉冲序列直接实现:x=zeros(1,N);x(1,n0)=1;2.单位阶跃序列直接实现:n=[ns:nf];x=[(n-n0)>=0];函数实现:function[x,n]=stepseq(n0,
8、ns,nf)n=[ns:nf];x=[(n-n0)>=0];3.实指数序列直接实现:n=[ns:nf];x=a.^n;4.复指数序列直接实现:n=[ns:nf];x=exp((sigema+jw)*n);5.正(余)弦序列直接实现:n=[ns:nf];x=cos(w*n+sita);复数求实部:real(x)复数求虚部:imag(x)复数求幅度:abs(x)复数求相角:angel(x)复数运算的常用函数:functionfsxl(delta,omig,n1,n2)e=delta+omig.*j;n=[n1:n2];x=exp(e*n)
9、;x_real=real(x);%生成实部序列x_imag=imag(x);%生成虚部序列x_magnitude=abs(x);%生成幅度序列x_phase=(180/pi)*angle(x);%生成相位序列fsxl(0