《信息与通信系统仿真》课件6 Matlab信号处理_第1页
《信息与通信系统仿真》课件6 Matlab信号处理_第2页
《信息与通信系统仿真》课件6 Matlab信号处理_第3页
《信息与通信系统仿真》课件6 Matlab信号处理_第4页
《信息与通信系统仿真》课件6 Matlab信号处理_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、别志松 Matlab信号处理Matlab信号处理现代信息与通信系统仿真中,无论发射机、接收机的建模还是一些常用的分析方法本质上都是在进行数字信号处理。信号处理是信息与通信系统建模与仿真的基本组成部分。Matlab中提供了信号处理工具箱,该工具箱中的函数与Matlab本身所携带的一些内置函数和统计工具箱中的有关函数一起实现Matlab强大的信号处理功能。提纲信号处理基础线性时不变系统的表示与分析滤波器的设计、分析与实现随机信号分析和经典谱估计信号的表示向量表示单通道信号在时间轴上的采样;多通道信号:矩阵。在这种表示方法中,实际上是把列号(或行号)隐含作为对应的采样时间,若需要指定信号的真实下标,

2、则需构造另一个向量作为时间向量与之对应。若要产生具有特定采样率的信号,需要定义时间轴向量。常见典型信号的生成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脉冲串re

3、ctpuls非周期方波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(

4、n)成为具有相同维数的序列向量y1(n)、y2(n),然后对y1(n)、y2(n)相加或相乘。大部分信号的表示都是由其时间序号和信号值两部分组成的,实现信号的乘加运算的关键在于使两者的时间基对齐。序列平移序列的平移可以看作是将序列的时间序号向量平移,而对应原时间序号的序列样值不变。要将序列左移n0个单位时,则将时间序号向量都减小n0个单位;若要右移n0个单位时,则将时间序号向量都增大n0个单位。对具有对应时间向量的信号而言,序列的平移其实不需要改变信号序列本身,只需要改变时间向量值即可。序列翻转序列的翻转可用MATLAB中的fliplr函数实现。n=0:10;x=n.*n-n;y=fliplr

5、(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为核心编写,执行效率较高。信号处

6、理工具箱中的许多函数,如谱分析、滤波器实现等功能,都用到了FFT。fft与ifft函数分别可以计算DFT及IDFTDFT和IDFT计算为符合MATLAB的表示方式,上式中的序列下标从1开始。fft函数和ifft函数用法如果x为向量,则函数fft(x) 计算向量的DFT;若x为矩阵,则计算每列的DFT。FFT函数可以指定FFT点数N,这种情况下如果向量长度大于N则截断,小于N则补零。ifft与fft函数的使用方法完全相同,需要注意的是,fft函数执行完毕信号的平均功率放大N倍,ifft之后信号平均功率则减小为原来的N分之一。fftshift在执行FFT后,零频的位置为向量中第一个数据,Matla

7、b提供了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(

8、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

9、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(

10、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低通滤波形式的插值,整数

11、倍内插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*(

12、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。resampleMatlab还提供了非整数倍的插值和抽取函数,对于给定的有限长N的离

13、散时间序列信号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

14、)的输出为 ay1(n)+by2(n)。时不变是指系统响应与激励加于系统的时刻无关。若输入x1(n)的 输出为y1(n),则输入x(n-m)时输出y(n-m)。MATLAB的信号处理工具箱提供了多种线性系统的表示模型,包括传递函数、极点增益法、状态空间法、带余数的部分分式展开法等,以方便用户针对具体应用选择最适合的表示方法,并提供了这些模型之间的转换函数。传递函数表示法其中常量b(i) 和 a(i)是滤波器系数,n和m 的最大值是滤波器的阶数。在Matlab中,可以用两个向量存储系数(行向量),一个向量存储分子,一个存储分母,这两个向量实质上对应的是分子和分母两个多项式。传递函数表示法举例例如

15、传递函数为H(z)=(z2-0.5z+2)/(z2+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由传递函数模型转换成零

16、极点增益模型,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)得到其冲激响应,由零极点模型、状态空间模型等也能够通过模型变换得到其冲激响

17、应。如果已知冲激响应,则可以利用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,

18、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)nu(n)-u(n-20)输入的离散信号为:X(n)= (n)+2 (n-20)+4 (n-40)利用卷积法求解输出y(n)线性时不变系统的频域分析线性时不变系统的频域分析与时域分析之间具有对偶关系,是一种经常遇到的系统分析方法。输入信号通过线性时不变系统,所得到的输出信号为根据卷积定理,时域卷积对应频域相乘Matlab线性系统频域分析实例输入信号x(t)1

19、)确定该信号的离散傅立叶变换2)假如该信号通过一个带宽为1.5Hz的理想低通滤波器,确定滤波器的输出并绘出曲线。2)假如该信号通过冲激响应为h(t)的滤波器,求输出信号,其中滤波器的设计流程滤波器设计图形界面工具fdatool随机信号分析与经典谱估计我们通常假设所处理的随机过程为广义平稳随机过程,许多统计量都采用时间平均来代替统计平均。对平稳随机变量序列X(n),可以用以下特征量描述其概率分布特性。1) 均值:即数学期望值,可以用MATLAB函数 mean(x)进行计算。2) 均方值:是随机变量x(n)平方的数学期望,实际上等效于信号的样点功率,可以用mean(x.*x)得到。3) 方差:计算

20、函数为 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函数基本类似。谱分析对于一个随机信号,它本身的傅里叶

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论