jbb0523(彬彬有礼)理论笔记系列文档
使用 matlab 进行频谱分析时若干问题解释
作者:jbb0523(彬彬有礼)
本文共说明了以下问题:
一、在 matlab 中如何表示频率为 f1,以采样率 f 抽样后所得到的数字信号?如此表示的
依据是什么?
二、使用 matlab 画出的频谱(一般是幅度谱或称振幅谱)的横坐标轴的意义是什么?如何
根据横坐标轴的值得到其所对应的实际频率?
三、实数序列的频谱除第零个点和第 N/2 个(当 N 为偶数时)点外(从 0~N-1),其它具
有共轭对称性质;复数序列呢?
四、频率分辨率指的是什么?高分辨谱和高密度谱有何区别?有何作用?
约定:对于信号 cos(wt),它是以周期为 2*pi/w 为周期的信号,角频率 w=2*pi*f,我们
经常这样称呼这个信号:它的角频率为 w,频率为 f Hz,周期 T=1/f 秒;
1)在 matlab 中对信号 s1(t)=cos(w1t)=cos(2*pi*f1*t)进行采样,其中 f1=1000Hz,根据
奈奎斯特采样定理,采样频率 f>=2*f1,在此我们取 f=3000Hz。
在 matlab 中仿真也好,实际中处理的信号也罢,一般都是数字信号。而采样就是将信
号 数 字化的一 个 过 程 , 设 将 信 号 s1(t)数 字 化 得 到 信号 s1(n)=cos(2*pi*f1/f*n),其中
n=[0…N-1],N 为采样点数。
我们来解释一下 s1(n),为什么说 s1(n)=cos(2*pi*f1/f*n)表示以采样率 f 对频率为 f1 的
信号进行采样的结果呢?采样,顾名思义,就是对信号隔一段时间取一个值,而隔的这段时
间就是采样间隔,取其倒数就是采样率了,那们我们看 s1(n)=cos(2*pi*f1/f*n),将前面的参
数代入,当 n=0 时,s1(0)=cos(0),当 n=1 时,s1(1)=cos(2*pi*1000/3000*1),当 n=2 时,
s1(2)=cos(2*pi*1000/3000*2),当 n=3 时,s1(3)=cos(2*pi*1000/3000*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)));