先推荐表格文章 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧【完整版】傅里叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波或余弦信号的无限叠加。
1.FT的理论就会告诉你可以通过傅里叶变化获知这个频率。
但是这个信号飘荡在空中,你需要先通过采样得到一个离散信号 (是采样频率,香农和奈奎斯特告诉我们,需要)。 2.得到离散信号后如何计算,DFT就会告诉你怎么办; 3.你嫌DFT太慢了怎么办,FFT就粉墨登场了。 一段matlab程序:
>> fs=1;
N=100; %频率分辨率为fs/N=0.01Hz,下面信号的频率0.05是0.01的整数倍,即为整周期采样 n=0:N-1;% n=0---99 t=n/fs; f0=0.05;%设定余弦信号频率 x=cos(2*pi*f0*t+pi/3);%生成正弦信号 %FFT是余弦类变换,最后得到的初始相位是余弦信号的初时相位,在这里为0。如果信号 figure(1); % 调出第一张图 %为x=sin(2*pi*f0*t);则初时相位应该是-90度而非0度。 subplot(211);% 表示subplot(m,n,p)有 m行 n列 第几个图 plot(t,x);%作余弦信号的时域波形 xlabel('t'); ylabel('y'); title('余弦信号 时域波形'); grid; %进行FFT变换并做频谱图 y=fft(x,N);%进行fft变换 mag=abs(y)*2/N;%求幅值 乘上后面的2/N得到正确幅值 f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换 subplot(212); plot(f(1:N/2),mag(1:N/2));%做频谱图 xlabel('频率(Hz)'); ylabel('幅值'); title('余弦信号 幅频谱图'); grid; angle(y(6))*180/pi %求信号初时相位。频率坐标f为[0 0.01 0.02 0.03 0.04 0.05 0.06 ...],所以谱线y中第6根谱线和信号x对应。 ans = 60.0000 |
|