Advertisement

离散傅里叶变换(DFT)

阅读量:

用途: 将时序数据映射至频域空间以识别信号频谱中的各个谐波成分
效果: 数学处理后可获得另一组具有相同元素个数的新序列

其中, \omega ={{e}^{-2\pi i/n}} ,\text{p}\in [0,n-1]


DFT 效果图

基于假设采样频率Fs和采样点数n的选择,则DFT的结果是一个长度为n的复数序列。其频率分辨率为\frac{{{\text{F}}_{s}}}{n}。对于第k(\text{k}\neq 1,k\leq \frac{n}{2})个频点而言,其频率值计算公式可表示为{{\text{F}}_{k}}=(k-1)\cdot \frac{{{F}_{s}}}{n}。其中该频点对应的信号幅度值定义为其模值即{{\text{A}}_{\text{k}}}=\sqrt{a_{k}^{2}\,\!+\,b_{k}^{2}\,\!}。同时该频点所对应的相位信息可通过反正切函数计算得出即{{P}_{k}=a\tan 2({b_k},{a_k})}。而该频点所对应的正弦波表达式则可表示为\frac{\text{2}{{\text{A}}_k}\,\!}{n}\cdot \sin (2\pi t\cdot {{F}_k + {{P}_k}))。特别地当k=1时该频点对应的是直流分量其实验测量结果表明此时其幅值计算公式简化后仅需采用\frac{{{A}_1}\,\!}{n}即可得到


案例:

复制代码
    Fs = 1000;            % 采样频率
    T = 1/Fs;             % 采样周期
    L = 1000;             % 信号长度   由此知,频率分辨率为 1hz
    t = (0:L-1)*T;        % 时间相量
    S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);   % 原始函数
    Y = fft(S);
    
    P2 = abs(Y/L);  % 每个量除以数列长度 L
    P1 = P2(1:L/2+1);  % 取交流部分
    P1(2:end-1) = 2*P1(2:end-1); % 交流部分模值乘以2
    f = Fs*(0:(L/2))/L;
    plot(f,P1)
    title('Single-Sided Amplitude Spectrum of S(t)')
    xlabel('f (Hz)')
    ylabel('|P1(f)|')
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读
这里写图片描述

全部评论 (0)

还没有任何评论哟~