实验1用MATLAB进行信号频谱分析资料

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
实验1 用MATLAB进行信号频谱分析 一、实验目的 ㈠ 初步掌握MATLAB产生常用离散时间信号的编程方法。 ㈡ 学习编写简单的FFT算法程序,对离散信号进行幅频谱分析。 ㈢ 观察离散时间信号频谱的特点。 二、实验原理 ㈠ 常用的离散时间信号 在 MATLAB语言主要是研究离散信号的。常用的离散信号有: 1.单位取样序列 0001)(nnn 2.单位阶跃序列 0001)(nnnu 3.实指数序列 Rananxn;)( 4.复指数序列 nenxnj)(0)( 5.正(余)弦序列 )cos()(0nnx n 6.周期序列 nNnxnx)()( ㈡ 离散信号的产生 离散信号的图形显示使用stem指令。 在 MATLAB中的信号处理工具箱中,主要提供的信号是离散信号。
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
由于MATLAB对下标的约定为从1开始递增,例如x=[5,4,3,2,1,0],表示x(1)=5,x(2)=4,X(3)=3… 因此要表示一个下标不由1开始的数组x(n),一般应采用两个矢量,如 n=[-3,-2,-1,0,l,2,3,4,5]; x=[1,-l,3,2,0,4,5,2,1]; 这表示了一个含9个采样点的矢量:X(n)={x(-3),x(-2),x(-1),x(0),x(1),x(2),x(3),x(4),x(5)}。 1.单位取样序列 0001)(nnn 这一函数实现的方法有二: 方法一:可利用MATLAB的zeros函数。 x=zeros(1,N); %建立一个一行N列的全零数组 x(1)=1; %对X(1)赋1 方法二:可借助于关系操作符实现 n=1:N; x=[n==1]; %n等于1时逻辑关系式结果为真,x=1;n不等于1时为假,x=0 如要产生 202100100)(10)(nnnnnnnnnnnn 则可采用MATLAB实现: n=n1:n2; x=[(n-n0)==0];%n=n0时逻辑关系式结果为真,x=1;n≠n0时为
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
假,x=0 2.单位阶跃序列 0001)(nnnu 这一函数可利用MATLAB的ones函数实现: x=ones(1,N); 还可借助于关系操作符“>=”来实现。如要产生在n1≤n0≤n2上的单位阶跃序列 00001)(nnnnnnu 则可采用MATLAB实现: n=n1:n2; x=[(n-n0)>=0]; %n-n0≥0为真,x=1;n-n0<0时为假,x=0 3.实指数序列 为任意实数aanxn)( 采用MATLAB实现: n=0:N-l; x=a.^n; 4.复指数序列 njenx)(0)( 采用MATLAB实现:
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
n=0:N-1; x=exp((lu+j*w0)*n); 5.正(余)弦序列

)cos()(0nnx 采用MATLAB实现: n=0:N-l; x=cos(w0*n+Q); 6.随机序列 MATLAB中提供了两类(伪)随机信号: rand(1,N)产生[0,1)上均匀分布的随机矢量; randn(1,N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。其它分布的随机数可通过上述随机数的变换而产生。 7.周期序列 )()(Nnxnx 例如,设t1表示T序列中一个周期的序列,要产生4个周期的T序列,用MATLAB实现: T=[t1 t1 t1 t1]; 三、实验任务 ㈠ 运行实验原理中介绍的例题程序,读懂每一条程序的含义,熟悉MATLAB中离散信号和频谱分析常用的子函数。 ㈡ 编写求解例1中单位阶跃序列频谱的程序,并显示其信号及其频谱曲线。 n0=0;nf=10;ns=3;N=32;M=100;
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
n2=n0:nf;x2=[(n2-ns)>=0]; subplot(3,1,1),stem(n2,x2); %画出x2的单位阶跃序列 i=0:N-1; j=0:M-1; %样点自0开始 y1=fft(x2,N); %对x2进行32点傅里叶变换 y2=fft(x2,M); %对x2进行100点傅里叶变换 aw1=abs(y1); aw2=abs(y2); %求幅度谱 subplot(3,1,2);plot(i,aw1) %32点傅里叶变换的频谱图 subplot(3,1,3);plot(j,aw2) %100点傅里叶变换的频谱图 ㈢ 已知一个用square产生的方波信号频率为100Hz,幅度为2V,对其进行32点的采样并进行FFT运算,显示采样后的信号及其频谱图。(可参考例5) f=100;Um=2;nt=1; %输入信号频率100、振幅为2和显示一个周期个数 N=32;T=nt/f; %N为32个采样点数,T为窗口显示时间 dt=T/N; %采样时间间隔 n=0:N-1; t=n*dt; xn=Um*square(2*f*pi*t,50); %产生时域信号 subplot(2,1,1);stem(t,xn); %显示时域信号 axis([0 T 1.1*min(xn) 1.1*max(xn)]); ylabel('x(n)'); i=0:N-1; y=fft(xn,N); AW=abs(y); %用FFT子函数求信号的频谱 subplot(2,1,2);stem(i,AW); %显示信号的频谱 ylabel('|X(k)|');
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
(四) 一无限长序列x(n)=)(8.0nun ① 截取序列长度M=10点,用FFT计算其频谱,并与理论计算的结果进行比较,观察频谱泄漏现象. ② 截取序列长n0=0;nf=9; n3=n0:nf;x3=(0.8).^n3; %实数指数序列 subplot(3,1,1);stem(n3,x3); N=10;i=0:N-1; M=50;j=0:M-1; y1=fft(x3,N); y2=fft(x3,M); aw1=abs(y1);aw2=abs(y2); %求幅度谱 subplot(3,1,2);plot(i,aw1); subplot(3,1,3);plot(j,aw2);
7章 数字信号处理实验 实验3 用MATLAB进行信号频谱分析
四、实验总结 3.我们知道抽样时间间隔越小,此时显示的频谱越是

准确。因此,当我们在利用fft计算频谱的时候,我们应该尽量提高取样点数,在任务一中发现32个采样点比100个采样点的频谱泄露严重,同时在任务三中也可以发现在M=10的时候频谱泄露比M=50的时候严重。 4 连续信号的频谱是非周期的,一旦我们将其离散,那么依据“一个域的离散必定导致另一个域的周期延拓”,因此我们可以知道离散时间信号的频谱是周期的。

相关文档
最新文档