一、实验内容
例题题目:
二、实验目的
- 掌握对连续时间、离散频率和离散时间、离散频率的DFT计算
- 掌握N、L对信号频谱的影响
三、实验原理
对于连续时间的信号,首先以抽样频率fs对其进行抽样,将其时域频域离散化,然后进行fft运算。
记抽样后的序列或者离散序列的长度为L,fft(x,N)计算N点的DFT。
- 若L>N,则将原序列截短为N点序列,在计算N点的DFT;
- 若L<N,则将原序列补零至N点,然后计算N点的DFT。
fftshift()以fs/2为中心左右互换,横坐标范围为-fs/2~fs/2.
四、实验结果与分析
作业一
实验代码:
由于需要计算不同大小的L对频谱分析的影响,多次重复使用fft函数计算,故将其包装成以下函数(fftnyf.m):
function [x,y] = fftnyf(N,L)
fs=600;
f1=100;
f2=120;
t=(0:N-1)*1/fs;
x=cos(2*pi*f1*t)+cos(2*pi*f2*t);
F=fft(x,L);
x=(-L/2:L/2-1)*fs/L;
y = fftshift(abs(F)*2/min(N,L));
end
脚本代码(f_analysis.m)(绘制了五种大小L的频谱图):
clear
[x,y]=fftnyf(128,16);
figure
subplot(511)
plot(x,y);
title('N=128,L=16');
axis([-300,300,0,1.2]);
[x,y]=fftnyf(128,32);
subplot(512)
plot(x,y);
title('N=128,L=32');
axis([-300,300,0,1.2]);
[x,y]=fftnyf(128,64);
subplot(513)
plot(x,y);
title('N=128,L=64');
axis([-300,300,0,1.2]);
[x,y]=fftnyf(128,128);
subplot(514)
plot(x,y);
title('N=128,L=128');
axis([-300,300,0,1.2]);
[x,y]=fftnyf(128,256);
subplot(515)
plot(x,y);
title('N=128,L=256');
axis([-300,300,0,1.2]);
实验结果:
分析:
N为给出的数据点,L为fft数据个数
- 当L<N时,对数据点数截断,频谱泄露现象明显,且当L很小时,FFT数据点太少,频率分辨率低,很难分辨信号的频谱成分。
- 当L=N时,没有添零而导致的其他频率成分。
- 当L>N时。对数据点补零,由于在时间域内信号加零,致使振幅谱中出现很多其他成分,谱的密度提高,但分辨率没有提高。
总之,fft数据点数L影响频谱频谱的成分和密度。
作业二
实验代码:
由于在第二问中,需要绘出不同L的信号频谱,故将以下复用代码包装成为函数(fftQ2):
function [x,y] = fftQ2(L)
N=64;
k=0:N-1;
x=cos(2*pi/15*k)+0.75*cos(2.3*pi/15*k);
X=fft(x,L);
x=(-L/2:L/2-1)*1/L;
y=abs(fftshift(X))*2/min(N,L);
end
主函数(Q2_draw.m):
clear
%64个点的fft
[n1,F1]=fftQ2(64);
figure
subplot(311)
plot(n1,F1)
title("N=64,L=64");
[n2,F2]=fftQ2(128)
subplot(312)
plot(n2,F2);
title("N=64,L=128");
[n3,F3]=fftQ2(256)
subplot(313)
plot(n3,F3);
title("N=64,L=256");
实验结果:
X[k]64点fft的信号频谱
问题二:
不能通过对这64点信号补零而分辨出两个谱峰,因为补零不能提高信号的频率分辨率,但是可以提高信号加窗后的合成信号的分辨细节,提高谱密度,使振幅谱中出现很多其他成分。
代码已附在上方,运行的会图结果如下:
五、总结(实验中遇到的问题、取得的经验、感想等)
对于实验的一些操作的感想和经验总结:
虽然matlab软件自带函数fft函数实现快速傅里叶变换算法,但是光使用fft并不能直接得到信号的频谱,还需要解决以下问题:
- 幅值变换
X(k)序列的幅值大小与参与变换的时域序列x(n)长度N(min(N,L))有关,变换后的幅值|X(k)|需要乘以2/N得到真实幅值
- 有效频率区域
X(k)序列由两部分共轭复数序列组成(复数共轭表示幅值相等、相位相反),相当于只有一半的复数序列是独立有效的,这部分复数序列对应0~fs/2的频率区域(fs为时域离散采样序列x(n)的采样频率)。