matlab频谱分析时的若干问题解释及几种频谱的理解

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

matlab频谱分析时的若干问题解释及几种频谱的理

文主要说明以下几个问题:

在matlab中如何表示频率为f1,以采样率f抽样后所得到的数字信号?如此表示的依据是什么?

使用matlab画出的频谱(一般是幅度谱或称振幅谱)的横坐标轴的意义是什么?如何根据横坐标轴的值得到其所对应的实际频率?

实数序列的频谱除第零个点和第N/2个(当N为偶数时)点外(从0~N-1),其它具有共轭对称性质;复数序列呢?

频率分辨率指的是什么?高分辨谱和高密度谱有何区别?有何作用?

约定:对于信号cos(ωt),它是以周期为2π/ω为周期的信号,角频率ω=2πf,我们经常这样称呼这个信号:它的角频率为ω,频率为fHz,周期T=1/f秒;

一、信号采样问题

在matlab中对以下信号进行采样:

其中f1 = 1000Hz,根据奈奎斯特采样定理,采样频率f ≥ 2f1,在此我们取f = 3000Hz。

在matlab中仿真也好,实际中处理的信号也罢,一般都是数字信号。而采样就是将信号数字化的一个过程,设将信号s1(t)数字化得到信号:

其中n=[0…N-1],N为采样点数。

我们来解释一下s1(n),为什么说上式表示以采样率f对频率为f1的信号进行采样的结果呢?采样,顾名思义,就是对信号隔一段时间取一个值,而隔的这段时间就是采样间隔,取其倒数就是采样率了。

那们我们看上式,将前面的参数代入:

当n=0时:

当n=1时:

当n=2时:

当n=3时:

这是不是相当于对信号s1(t)的一个周期内采了三个样点呢?对一个频率为1000Hz的信号每周期采三个样点不就是相当于以3倍于频率的采样率进行采样呢?注意,当n=3时相当于下一个周期的起始了。

我们取采样点数N=64,即对64/3=21.3个周期,共计

64/3/f1=21.3ms时长。

我们在matlab中输入以下命令:

>> n=0:63;

>> f1=1000;f=3000;

>> s1=cos(2*pi*f1/f*n);

>> plot(abs(fft(s1)));

图1

下面我们对图1进行一下解释,以说明图中的横坐标轴的所代表的意义。

对于信号:

我们知道它的傅里叶变换是:

如果在-2π×3000/2 ~ 2π×3000/2范围内观察信号s1(t)的频谱,则应该在2π×1000和-2π×1000两个频点上有两根谱线,而对采样后的数字信号,频率坐标轴范围-2π×3000/2 ~ 2π×3000/2将被归一化到-2π×(3000/2)/3000 ~ 2π×(3000/2)/3000即-π ~

π范围内,因此将在2π×1000/3000和-2π×1000 /3000即2π/3和-2π/3的两个频点上有两根谱线。注意,此时坐标轴上的2π代表着3000Hz的频率范围。

另外还有一点应该明白的是,时域采样意味着频域的周期延拓,即-π ~ π上的谱线与-π+M×2π ~ π+M×2π范围内的谱线是一

模一样的,其中M为任意的整数。更通俗的说,a ~ b之间的频谱与a+M×2π ~ b+M×2π之间的频谱是一模一样的。因此-π ~ 0之间的频谱与π ~ 2π之间的频谱是一样的。

在matlab中,如果仅简单的执行plot绘图命令,坐标横轴将是1 ~ N,那么这1 ~ N代表着什么呢?是的,应该代表0×2π,应用到上面的例子即是0~3000Hz的频率范围。

其中1 ~ N/2代表0 ~ π,而N/2 ~ N代表-π ~ 0。

从理论上讲,对于

应该在1000Hz和-1000Hz两个频点上有两根线,即应该在x1(其中x1×(3000/2) /(64/2)=1000,解得x1=21.3)上和64-x1上有两根谱线。观察图1可知,两个峰值大约对应横轴坐标为21和43=64-21两个点。

若令:

则傅里叶变换是:

在matlab中执行以下命令:

>> n=0:63;

>> f1=1000;f=3000;

>> s2=sin(2*pi*f1/f*n);

>> plot(abs(fft(s2)));

则可得其频谱,如图2所示:

图2

由图可得两个峰值的位置基本与图1相同,这由其傅里叶表达式也可以得出此结论。

以上分别说明了余弦和正弦的频谱,而且余弦和正弦均是实数序列,实数序列的离散傅里叶变换(DFT)具有共轭对称性质(此性质可百度或查阅数字信号处理相关书籍或自行推导,很简单的),这从图中也可以看出。(画图时取其模值,共轭取模与原先数取模将变成相等)

二、复数的频谱

若令

则计算其傅里叶变换可得:

因此频谱中将只有一根谱线。在matlab中输入以下命令:

>> n=0:63;

>> f1=1000;f=3000;

>> s3=cos(2*pi*f1/f*n)+j*sin(2*pi*f1/f*n);

>> plot(abs(fft(s3)));

图3

从图3可以看出,对于一个复数序列求频谱,它的幅度谱将不再是对称的两根谱线。其实经过类似于实数序列的推导可以得出,复数

序列的频谱将不再具有类似于实数序列的共轭对称性质。

当ω1为负值时会如何呢?同样对于信号:

输入以下命令计算它的频谱:

>> n=0:63;

>> f1=-1000;f=3000;

>> s4=cos(2*pi*f1/f*n)+j*sin(2*pi*f1/f*n);

>> plot(abs(fft(s4)));

图4

对比图3和图4可知,当频率为正值时,峰值将在1 ~ 32范围内;而当频率为负值时,峰值将在33 ~ 64之间。此性质可通俗的描述如下:

对于信号:

相关文档
最新文档