[DFT分析连续时间信号频谱.doc
文本预览下载声明
在matlab中对信号进行采样,其中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)=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)));从理论上讲应该在1000Hz和-1000Hz两个频点上有两根线,即应该在 解得k =21.3上和64-上有两根谱线。观察图1可知,两个峰值大约对应横轴坐标为21和43=64-21两个点。
图1下面引入一个新的概念:频率分辨率频率分辩率是指频域取样中两相邻点间的频率间隔。更确切的说是如果某一信号含有两个频率成分f1和f2,Of=|f2-f1|,频率分辨率的概念是如果频率分辨率大于Of,对信号进行谱分析后将不能别出其含有两个频率成分,这两个频率将混叠在一起。
现在我们设定信号s(t)=cos(w1*t)+sin(w2*t),其中w1=2*pi*1000,w2=2*pi*1100
在matlab中输入以下命令计算其频谱:
n=0:63;
f1=1000;f2=1100;f=3000;
s5=cos(2*pi*f1/f*n)+sin(2*pi*f2/f*n);
plot(abs(fft(s5)));
图从图中可以看出能够分辨出f1=1000Hz和f2=1100Hz两个频率分量。
我们利用的理论来计算一下此时的频率分辨率:
采样频率fs=3000Hz
采样点个数N=64
最长记录长度tp=N*(1/fs)
频率分辨率F=1/tp=fs/N=3000/64=46.875Hz
因为Ff2-f1=100Hz,因此能够分辨出两个频率分量。
第一种尝试:fs不变仍为3000Hz,即奈奎斯特定理仍然满足,大于信号s (t)的最高频率分量1100Hz的两倍,但将采样点个数N减小为24个,在matlab中输入以下命令:
n=0:23;
f1=1000;f2=1100;f=3000;
s=cos(2*pi*f1/f*n)+sin(2*pi*f2/f*n);
plot(abs(fft(s)));
图第二种尝试:采样率fs升为8000Hz,即满足奈奎斯特采样定理,大于信号s(t)的最高频率分量1100Hz的两倍,采样点个数N不变,仍为64个,在matlab中输入以下命令:
n=0:63;
f1=1000;f2=1100;f=8000;
s=cos(2*pi*f1/f*n)+sin(2*pi*f2/f*n);
plot(abs(fft(s)));
图由图图可以看出,这种尝试虽然满足奈奎斯特采样定理,但都不能分辨出两个频率分量,用前面的理论知识可以作如下分析:
第一种尝试的频率分辨率F=1/tp=fs/N=3000/24=125Hz100Hz
第二种尝试的频率分辨率F=1/tp=fs/N=8000/64=125Hz100Hz
因此以上种尝试均不能分辨出频率间隔为100Hz的两个频率分量。第种尝试::如图所示,频谱很不平滑,呈很明显的折线状态,采样率fs为000Hz,即满足奈奎斯特采样定理,大于信号s(t)的最高频率分量1100Hz的两倍,采样点个数,在matlab中输入以下命令:
n=0:23;
f1=1000;f2=1100;f=3000;
s5=cos(2*pi*f1/f*n)+sin(2*pi*f2/f*n);
s6=[s5,zeros(1,40)]
plot(abs(fft(s6)))
图是将图中的信号在时域补了
显示全部