《信息与通信系统仿真》课件6 Matlab信号处理

上传人:考试不挂****2941... 文档编号:242964209 上传时间:2024-09-12 格式:PPT 页数:45 大小:754KB
返回 下载 相关 举报
《信息与通信系统仿真》课件6 Matlab信号处理_第1页
第1页 / 共45页
《信息与通信系统仿真》课件6 Matlab信号处理_第2页
第2页 / 共45页
《信息与通信系统仿真》课件6 Matlab信号处理_第3页
第3页 / 共45页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,别志松,Matlab,信号处理,Matlab,信号处理,现代信息与通信系统仿真中,无论发射机、接收机的建模还是一些常用的分析方法本质上都是在进行数字信号处理。,信号处理是信息与通信系统建模与仿真的基本组成部分。,Matlab,中提供了信号处理工具箱,该工具箱中的函数与,Matlab,本身所携带的一些内置函数和统计工具箱中的有关函数一起实现,Matlab,强大的信号处理功能。,提纲,信号处理基础,线性时不变系统的表示与分析,滤波器的设计、分析与实现,随机信号分析和经典谱估计,信号的表示,向量表示单通道信号在时间轴上的采样;,多通道信号:矩阵。,在这种表示方法中,实际上是把列号,(,或行号,),隐含作为对应的采样时间,若需要指定信号的真实下标,则需构造另一个向量作为时间向量与之对应。若要产生具有特定采样率的信号,需要定义时间轴向量。,常见典型信号的生成,t = (0:0.001:1);,imp= 1; zeros(99,1); %,单位冲击,unit_step = ones(100,1); %,单位阶跃,(0,点跳变,.),ramp_sig= t; %,单位斜变,quad_sig=t.2; %,二次序列,sq_wave = square(4*pi*t); %,周期为,0.5,的方波,函数名称,波形描述,chirp,调频余弦信号,diric,Dirichlet,或周期,sinc,函数,gauspuls,高斯调制的余弦脉冲,gmonopuls,高斯单脉冲,pulstran,脉冲串,rectpuls,非周期方波,sawtooth,锯齿波或三角波,sinc,抽样函数,square,方波,tripuls,非周期的三角波,vco,压控振荡,信号的基本运算,运算类型,数学描述,MALAB,实现,信号加,x(n)=x1(n)+x2(n),x=x1+x2,信号乘,x(n)=x1(n)x2(n),x=x1. *x2,倍率运算,y(n),kx(n),y=k*x,位移,y(n)=x(n-k),y=zeros(1,k) x,翻转,y(n)=x(-n),y=fliplr(x),采样和,y(n)=x(n),sum (x(n1:n2),采样积,y(n)=x(n),prod(x(n1:n2),具有时间基的信号相加,如果序列长度不等,可以通过补零的方式使,x1(n),、,x2(n),成为具有相同维数的序列向量,y1(n),、,y2(n),,然后对,y1(n),、,y2(n),相加或相乘。大部分信号的表示都是由其时间序号和信号值两部分组成的,实现信号的乘加运算的关键在于使两者的时间基对齐。,序列平移,序列的平移可以看作是将序列的时间序号向量平移,而对应原时间序号的序列样值不变。要将序列左移,n,0,个单位时,则将时间序号向量都减小,n,0,个单位;若要右移,n,0,个单位时,则将时间序号向量都增大,n,0,个单位。,对具有对应时间向量的信号而言,序列的平移其实不需要改变信号序列本身,只需要改变时间向量值即可。,序列翻转,序列的翻转可用,MATLAB,中的,fliplr,函数实现。,n=0:10;,x=n.*n-n;,y=fliplr(x);,n1=-fliplr(n);,subplot(1,2,1),stem(n,x);,xlabel(n);ylabel(x(n);title(,原序列,);,subplot(1,2,2),stem(n1,y);,xlabel(n);ylabel(x(-n);title(,翻转序列,);,离散傅里叶变换,运用傅里叶分析,可以从频域的观点分析和处理信号,达到时域分析不能获得的效果。,离散傅里叶变换,DFT,是,Matlab,数字信号处理的主要工具之一,由,Matlab,提供的一组内置函数实现。,这些函数包括,fft,、,ifft,、,fftshift,和,ifftshift,。,fft,和,ifft,函数以著名的,fftw,为核心编写,执行效率较高。,信号处理工具箱中的许多函数,如谱分析、滤波器实现等功能,都用到了,FFT,。,fft,与,ifft,函数分别可以计算,DFT,及,IDFT,DFT,和,IDFT,计算,为符合,MATLAB,的表示方式,上式中的序列下标从,1,开始。,fft,函数和,ifft,函数用法,如果,x,为向量,则函数,fft(x),计算向量的,DFT;,若,x,为矩阵,则计算每列的,DFT,。,FFT,函数可以指定,FFT,点数,N,,这种情况下如果向量长度大于,N,则截断,小于,N,则补零。,ifft,与,fft,函数的使用方法完全相同,需要注意的是,,fft,函数执行完毕信号的平均功率放大,N,倍,,ifft,之后信号平均功率则减小为原来的,N,分之一。,fftshift,在执行,FFT,后,零频的位置为向量中第一个数据,,Matlab,提供了,fftshift,函数,其作用是将,fft,之后数据的零频移到数据的中间,实际上就是将向量的左右两个半边交换位置。函数,ifftshift,具有类似功能,当向量长度为偶数时两者功能完全相同, 长度为奇数时两者稍有区别。,fft,示例,Fs = 1000; %,采样频率,T = 1/Fs; %,采样时间,L = 1000; %,信号长度,t = (0:L-1)*T; %,时间向量,x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); %,信号:两个正弦波叠加,y = x + 2*randn(size(t); %,加上白噪声,subplot(1,3,1),plot(Fs*t(1:50),y(1:50) %,时域波形,title(Signal Corrupted with Zero-Mean Random Noise),xlabel(time (ms),NFFT = 2nextpow2(L); %,为了加快计算速度,选择,FFT,点数为,2,的幂次。,Y = fft(y,NFFT)/L; %,进行,FFT,变换,f = Fs/2*linspace(0,1,NFFT/2+1); %,频域横坐标,subplot(1,3,2),% Plot single-sided amplitude spectrum.,plot(f,2*abs(Y(1:NFFT/2+1) %,利用其中一半绘制单边频谱,title(Single-Sided Amplitude Spectrum of y(t),xlabel(Frequency (Hz),ylabel(|Y(f)|),f1= Fs*linspace(-1,1,NFFT)/2;,yy=abs(fftshift(Y); %,利用,fftshift,实现移频,subplot(1,3,3),plot(f1,yy) %,绘制移频后的双边频谱,title(Double-Sided Amplitude Spectrum of y(t),xlabel(Frequency (Hz),ylabel(|Y(f)|),信号的能量,数字复信号能量可以通过对于序列中所有样点的能量进行累加得到,可以选用三个不同的,Matlab,语句实现:,sum(x.*conj(x);,sum(abs(x).2);,x*x;,样点功率,数字复信号的信号功率则总可以与样点平均功率联系起来,平均样点功率为,sum(x.*conj(x) /length(x);,sum(abs(x).2) /length(x);,x*x/length(x);,多速率信号处理,信号处理中经常遇到过采样、降采样、抽取和插值等处理,这些处理统称为多速率信号处理。,MATLAB,内置函数和信号处理工具箱提供了一组完整的函数,能够完成各种多速率信号处理任务。,函数名称,功能描述,decimate,抽取,以低通滤波的方式减低采样率,downsample,降采样,以整数倍降低采样率,interp,低通滤波形式的插值,整数倍内插,resample,任意倍数的信号重采样,upfirdn,升采样、,FIR,滤波及降采样级联操作,upsample,升采样,增加采样率整数倍,抽取,给定有限长,N,的离散时间序列信号,x(n),,,n=0,1,N-1,,若要将其采样速率减小,M,倍 (假定,N/M,为整数),最简单的方法是将,x(n),中每,M,个点抽取一个, 组成新的离散序列,,然而,根据采样定理,当新的采样率低于原信号频宽的,2,倍时,会发生混叠,所以在抽取之前先对,x(n),做低通滤波。,MATLAB,的,decimate,函数实现信号的整数倍抽取,常用的调用方式为,y = decimate(x,r),,在抽取之前默认采用,8,阶切比雪夫,I,型低通滤波器压缩频带,截止频率为,0.8*(Fs/2)/r,,还可以指定所采用的低通滤波器的类型及阶数,调用形式可以为,y = decimate(x,r,n),或,y = decimate(x,r,fir),。,插值,与之相对应的是,interp,函数。,MATLAB,的函数,interp(x,r),进行信号的整数倍内插,并在插值后进行低通滤波。,y = interp(x,r),将,x,的采样率提高,r,倍,插值后的向量,y,比原始输入,x,长,r,倍。还可以用,y = interp(x,r,l,alpha),指定滤波器长度,l,及截止频率因子,alpha,。默认情况下,l =4,,,alpha = 0.5,。,resample,Matlab,还提供了非整数倍的插值和抽取函数,对于给定的有限长,N,的离散时间序列信号,x(n),,,n=0,1,N-1,,若希望将原来的采样率,Fs,变为原来的,L/M,倍, 则可以先对原信号做,L,倍插值,然后做,M,倍抽取,,MATLAB,的函数,resample,实现这一功能。,resample(data,P,Q),重采样,data,,先插值,P,倍,然后再按,Q,倍抽取,默认采用,10,阶滤波器实现,也可通过调用方式,resample(data,P,Q,order),指定了插值之后和抽取之前所用滤波器的阶数。,线性时不变系统的表示与分析,线性时不变系统的基本模型,线性系统是指系统满足均匀性和叠加性,若输入,x1(n),与,x2(n),的 输出分别为,y1(n),和,y2(n),,线性系统对输入,ax1(n)+bx2(n),的输出为,ay1(n)+by2(n),。时不变是指系统响应与激励加于系统的时刻无关。若输入,x1(n),的 输出为,y1(n),,则输入,x(n-m),时输出,y(n-m),。,MATLAB,的信号处理工具箱提供了多种线性系统的表示模型,包括传递函数、极点增益法、状态空间法、带余数的部分分式展开法等,以方便用户针对具体应用选择最适合的表示方法,并提供了这些模型之间的转换函数。,传递函数表示法,其中常量,b(i),和,a(i),是滤波器系数,,n,和,m,的最大值是滤波器的阶数。,在,Matlab,中,可以用两个向量存储系数(行向量),一个向量存储分子,一个存储分母,这两个向量实质上对应的是分子和分母两个多项式。,传递函数表示法举例,例如传递函数为,H(z)=(z,2,-0.5z+2)/(z,2,+0.4z+1),的线性系统用两个向量表示:,b=1 -0.5 2,a=1 0.4 1,调用,matlab,的函数,可计算该系统的频率响应:,h,f=freqz(b,a),plot(f,abs(h); %,绘出幅频特性;,零极点增益表示法,仍然是传递函数,不过形式不同,状态空间表示法,数字滤波器或数字系统通常可以表示为一阶差分方程组的形式,组成一组状态方程和输出方程,多个模型之间的转换函数,matlab,工具箱提供了多个线性系统模型之间相互转换的函数。,tf2ss,由传递函数模型转换成状态空间模型,,Ss2tf,由状态空间模型转换成传递函数模型;,tf2zp,由传递函数模型转换成零极点增益模型,,zp2ft,由零极点增益模型转换成传递函数模型;,ss2zp,由状态空间模型转换成零极点增益模型,,zp2ss,由零极点增益模型转换成状态空间模型等。,卷积,任意序列都可以表示为单位抽样序列的移位加权和形式,如果已知线性时不变系统的冲激响应,h(n),,则对任意输入,x(n),的输出,y(n),均可以用卷积实现:,y(n)=x(n)*h(n),Matlab,中卷积的实现,在,Matlab,中,如果已知线性系统的任何表示方式,都可以得到其冲激响应,例如,对单极点滤波器,b = 1, a = 1 -0.9,,可以用,h = filter(b,a,imp),得到其冲激响应,由零极点模型、状态空间模型等也能够通过模型变换得到其冲激响应。,如果已知冲激响应,则可以利用,MATLAB,提供的,conv,函数执行标准的一维卷积运算,,conv,函数的调用格式为:,w = conv(u,v),,如果向量,u,的长度为,m,,向量,v,的长度为,n,,则,w,为一个长度为,m+n-1,的向量,其第,k,个元素为:,带有时间序号的卷积,函数,conv,假定,u(k),、,v(k),都是从,k=0,开始,这就限制了它的应用范围。因此,要对从任意时间序号值的序列进行卷积运算,且正确表示出计算结果,还须构造序列对应序号向量。,functiony,ny=convsubscrip(x,nx,h,nh),% modified convolution function,% convsubscrip(x,nx,h,nh),ny1=nx(1)+nh(1);,ny2=nx(length(x)+nh(length(h);,ny=ny1:ny2;,y=conv(x,h);,MATLAB,中线性时不变系统分析实例,若离散线性时不变系统的单位冲激响应为:,h(n)=(0.8),n,u(n)-u(n-20),输入的离散信号为:,X(n)= (n)+2 (n-20)+4 (n-40),利用卷积法求解输出,y(n),线性时不变系统的频域分析,线性时不变系统的频域分析与时域分析之间具有对偶关系,是一种经常遇到的系统分析方法。输入信号通过线性时不变系统,所得到的输出信号为,根据卷积定理,时域卷积对应频域相乘,Matlab,线性系统频域分析实例,输入信号,x(t),1,)确定该信号的离散傅立叶变换,2,)假如该信号通过一个带宽为,1.5Hz,的理想低通滤波器,确定滤波器的输出并绘出曲线。,2,)假如该信号通过冲激响应为,h(t),的滤波器,求输出信号,其中,滤波器的设计流程,滤波器设计图形界面工具,fdatool,随机信号分析与经典谱估计,我们通常假设所处理的随机过程为广义平稳随机过程,许多统计量都采用时间平均来代替统计平均。对平稳随机变量序列,X(n),,可以用以下特征量描述其概率分布特性。,1),均值:即数学期望值,可以用,MATLAB,函数,mean(x),进行计算。,2),均方值:是随机变量,x(n),平方的数学期望,实际上等效于信号的样点功率,可以用,mean(x.*x),得到。,3),方差:计算函数为,var(x),4),标准差:可以采用,std(x),或,sqrt(var(x),得到,xcorr,相关函数,xcorr,函数用于估计随机序列信号的互相关序列,其自相关序列作为一种特殊情况进行处理。随机过程的互相关本来应当计算:,但是由于序列长度为有限值,因此只能计算估计值。不同调用方式所采用的估计公式有所不同。,xcorr,调用方式,c=xcorr(x,y,maxlags,option),option,指定互相关的归一化选项,它可以是:,biased,:计算互相关函数的有偏互相关估计;,unbiased,:计算互相关函数的无偏互相关估计;,coeff,:归一化方式;,none,:,默认状态,函数执行非归一化计算相关。,协方差,MATLAB,信号处理工具箱提供了,xcov,用于估计自协方差序列与互协方差序列,其用法与,xcorr,函数基本类似。,谱分析,对于一个随机信号,它本身的傅里叶变换是不存在的,因此无法像确定性信号那样用数学表达式来精确地描述它,而只能用它的各种统计平均量来表征它。其中,自相关函数是最能完整地表征它的特定统计平均量值。,一个随机信号的功率谱密度正是自相关函数的傅里叶变换,我们可以用功率谱密度来表征它的统计平均谱特性,功率谱估计在其他应用中也有十分重要的作用,谱分析分类,功率谱估计可以分为经典谱估计方法与现代谱估计方法,谱估计就不可避免的要从无限长随机序列中截取一段数据,就是加窗。,经典法的目光集中在如何处理已经截得的那段数据上,很多技巧表现在如何选择合适的窗。,周期图法认为窗外数据是窗内数据的周期重复,而相关法认为数据窗外的数据一概为零。,现代谱估计,以参数模型为基础的现代谱估计,是把随机序列看成是由一个具有特定参数和结构的信源模型发出的。,如果模型结构选择正确,就可以从截取的一段样本中推算出模型的参数,从而可以预测或外推出窗外的数据是什么。,显然,模型的选择越正确,参数的测算越准确,窗外数据的预测就越准确,所得的谱估计也就越精确。,Matlab,中的谱分析,MATLAB,信号处理工具箱为我们提供的很多谱分析方法,新版本的,Matlab,将这些方法统一到了,spectrum,对象框架下。,Hs = spectrum.estmethod(input1,.),调用方式会产生一种以,estmethod,为估计方法的谱估计对象,这个对象中包含所有特定谱估计方法所需的参数信息,这些参数作为对象的属性进行组织,可以根据需要修改这些属性。,不同的估计方法所对应的属性和方法都会有所不同。,对象产生以后,我们可以通过调用该对象的某种方法实现谱估计操作。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!