登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

电子信息学习 资料共享

 
 
 

日志

 
 

实验2 用MATLAB进行信号频谱分析  

2010-01-24 21:36:52|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

实验2   MATLAB进行信号频谱分析

一、实验目的

㈠ 初步掌握MATLAB产生常用离散时间信号的编程方法。

㈡ 学习编写简单的FFT算法程序,对离散信号进行幅频谱分析。

㈢ 观察离散时间信号频谱的特点。

 

二、实验原理

㈠ 常用的离散时间信号

MATLAB语言主要是研究离散信号的。常用的离散信号有:

1.单位取样序列   

                      

    2.单位阶跃序列

                     

3.实指数序列

                      

4.复指数序列

                      

5.正()弦序列

                         

6.周期序列

                     

㈡ 离散信号的产生

离散信号的图形显示使用stem指令。

    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-10l2345]  

        x=[1-l3204521]

这表示了一个含9个采样点的矢量:X(n)={x(-3)x(-2)x(-1)x(0)x(1)x(2)x(3)x(4)x(5)}

    1.单位取样序列   

                      

这一函数实现的方法有二:

方法一:可利用MATLABzeros函数。

        x=zeros(1N)    %建立一个一行N列的全零数组

   x(1)=1            %X1)赋1

    方法二:可借助于关系操作符实现

   n=1:N;              

   x=[n==1];  %n等于1时逻辑关系式结果为真,x=1n不等于1时为假,x=0

如要产生              

则可采用MATLAB实现:

       n=n1:n2

  x=[(n-n0)==0]%n=n0时逻辑关系式结果为真,x=1nn0时为假,x=0

    2.单位阶跃序列

                     

    这一函数可利用MATLABones函数实现:

        x=ones(1N)

还可借助于关系操作符“>=”来实现。如要产生在n1n0n2上的单位阶跃序列

                     

则可采用MATLAB实现:

        n=n1n2

   x=[(n-n0)>0] %n-n00为真,x=1n-n00时为假,x=0

    3.实指数序列

采用MATLAB实现:

        n=0N-l

        x=a.^n 

    4.复指数序列

采用MATLAB实现:

        n=0:N-1

        x=exp((lu+j*w0)*n)

    5.正()弦序列

                                     

采用MATLAB实现:

        n=0N-l

        x=cos(w0*n+Q)

    6.随机序列

    MATLAB中提供了两类()随机信号:

    rand(1N)产生[01)上均匀分布的随机矢量;

    randn(1N)产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。其它分布的随机数可通过上述随机数的变换而产生。

    7.周期序列

                     

    例如,设t1表示T序列中一个周期的序列,要产生4个周期的T序列,用MATLAB实现:

T[t1 t1 t1 t1]

 

1:编写MATLAB程序来产生下列基本脉冲序列。

    (1)单位脉冲序列:起点no,终点nf,在ns处有一单位脉冲(nonsnf)

    (2)单位阶跃序列: 起点no,终点nf,在ns前为0,在ns处及以后为l(nonsnf)

    (3)实数指数序列:

   

    (4)复数指数序列:

   

MATLAB程序及结果如下,运行结果如图7-3-1所示。

n0=0;nf=10;ns=3;

    n1=n0:nf;x1=[(n1-ns)==0];             %单位脉冲序列

    n2=n0:nf;x2=[(n2-ns)>=0];             %单位阶跃序列

    n3=n0:nf;x3=(0.75).^n3;               %实数指数序列

    n4=n0:nf;x4=exp((-0.2+0.7j)*n4);    %复数指数序列

subplot(2,2,1),stem(n1,x1);  

subplot(2,2,2),stem(n2,x2);

    subplot(2,2,3),stem(n3,x3);

    subplot(4,2,6),stem(n4,real(x4));     %注意subplot的输入变元

    subplot(4,2,8),stem(n4,imag(x4));

7-3-1      1 基本脉冲序列

2一个连续的锯齿波信号频率为1Hz,振幅值幅度为1V,在窗口上显示两个周期的信号波形,对它进行32点采样获得离散信号,试显示原信号和其采样获得离散信号波形。(见图7-3-2

f=1;Um=1;nt=2;                      %输入信号频率、振幅和显示周期个数

N=32;T=nt/f;                         %N为采样点数,T为窗口显示时间

dt=T/N;                               %采样时间间隔

n=0:N-1;

t=n*dt;

xn=Um*sawtooth(2*f*pi*t);          %产生时域信号

subplot(2,1,1);plot(t,xn);         %显示原信号

axis([0 T 1.1*min(xn) 1.1*max(xn)]);

ylabel('x(t)');

subplot(2,1,2);stem(t,xn);         %显示经采样的信号

axis([0 T 1.1*min(xn) 1.1*max(xn)]);

ylabel('x(n)');

7-3-2  2连续信号与其经采样获得的离散信号

    ㈢ 离散信号的频谱

    MATLAB语言为我们提供了一些分析信号频谱的有效工具,其中使用FFT子函数是一种方便快捷的方法。

    3:已知一个8点的时域非周期离散δ(n-n0)信号,n0=1,用N=32点进行FFT变换,作其时域信号图及信号频谱图。程序与结果如下,运行结果如图7-3-3所示。

n0=1;n1=0;n2=7;N=32;

n=n1:n2;

W=[(n-n0)==0];            %建立时间信号

subplot(2,1,1);stem(n,W);

i=0:N-1;                  %频率样点自0开始

y=fft(W,N);

aw=abs(y);                   %求幅度谱

    subplot(2,1,2);plot(i,aw);

 

  7-3-3  单位脉冲序列及频谱

4已知一个8点的时域非周期离散阶跃信号,n1=0n2=7,在n0=4前为0n0以后为1。用N=32点进行FFT变换,作其时域信号图及信号频谱图。程序如下,运行结果如图7-3-4所示。

n1=0;n0=4;n2=7;N=32;

n=n1:n2;

W=[(n-n0)>=0];

subplot(2,1,1);stem(n,W);

i=0:N-1;

y=fft(W,N);

aw=abs(y);

subplot(2,1,2);plot(i,aw);

7-3-4    单位阶跃序列及频谱

5已知一时域周期性正弦信号的频率为1Hz,振幅值幅度为1V,在窗口上显示一个周期的信号波形,对其进行32点采样后,进行32点的FFT,观察其时域信号及信号频谱。程序如下,其结果如图7-3-5

f=1;Um=1;nt=1;                      %输入信号频率、振幅和显示周期个数

N=32;T=nt/f;                         %N为采样点数,T为窗口显示时间

dt=T/N;                               %采样时间间隔

n=0:N-1;

t=n*dt;

xn=Um*sin(2*f*pi*t);                %产生时域信号

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-5  离散的周期性正弦信号与频谱

   三、实验任务

㈠ 运行实验原理中介绍的例题程序,读懂每一条程序的含义,熟悉MATLAB中离散信号和频谱分析常用的子函数。

㈡ 编写求解例1单位阶跃序列频谱的程序,并显示其信号及其频谱曲线。

㈢ 已知一个用square产生的方波信号频率为100Hz,幅度为2V,对其进行32点的采样并进行FFT运算,显示采样后的信号及其频谱图。(可参考例5

(四)无限长序列x(n)=    

截取序列长度M=10,FFT计算其频谱,并与理论计算的结果进行比较,观察频谱泄漏现象.

截取序列长度M=20,FFT计算其频谱,观测频谱泄漏情况与进行比较.

 

四、实验预习

㈠ 认真阅读实验原理,明确本次实验任务,读懂各函数和例题程序,了解实验方法。

㈡ 根据实验任务,预先编写实验程序。

五、实验报告

㈠ 列写通过调试的实验程序。

㈡ 离散时间信号的频谱有何特点,与连续信号的频谱有何异同?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  评论这张
 
阅读(2563)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018