0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Matlab利用離散傅里葉變換DFT進行頻譜分析的步驟

冬至子 ? 來源:Matlab Fans ? 作者:Matlab Fans ? 2023-07-20 17:33 ? 次閱讀

信號在頻域能夠呈現(xiàn)出時域不易發(fā)現(xiàn)的性質(zhì)和規(guī)律,傅里葉變換是將信號從時域變換到頻域,便于在頻域?qū)π盘柕奶匦赃M行分析。離散傅里葉變換 (DFT),是傅里葉變換在時域和頻域上的離散呈現(xiàn)形式,通俗的說就是將經(jīng)過采樣的有限長度時域離散采樣序列變換為等長度的頻域離散采樣序列,通過對變換得到的頻域采樣序列進行適當?shù)膿Q算和處理,可以得到信號的頻譜(頻率-幅值曲線和頻率-相位曲線)。

1. 定義

離散傅里葉變換 (DFT)的定義為:

圖片

式中,x(n)為時域離散采樣序列(通常為實數(shù)序列),N為時域離散采樣序列x(n)的長度,X(k)為頻域離散采樣序列(通常為復數(shù)序列)。

快速傅里葉變換(FFT)是離散傅里葉變換(DFT)的一種快速算法,F(xiàn)FT的計算結(jié)果與DFT完全相同,但FFT相對于DFT減小了計算量、節(jié)約計算資源消耗,能夠適應在線計算,因此實際DFT都是通過FFT算法來求得結(jié)果。

Matlab軟件自帶fft函數(shù)實現(xiàn)快速傅里變換算法,但是光使用fft并不能直接得到信號的頻譜,還需要解決以下問題:

圖片

  • 幅值變換 :X(k)序列的幅值大小與參與變換的時域序列x(n)長度N有關,變換后的幅值|X(k)|需要乘以2/N得到真實幅值;
  • 有效頻率區(qū)域 :X(k)序列由兩部分共軛復數(shù)序列組成(復數(shù)共軛表示幅值相等、相位相反),相當于只有一半的復數(shù)序列是獨立有效的,這部分復數(shù)序列對應0~fs/2的頻率區(qū)域(fs為時域離散采樣序列x(n)的采樣頻率)。
  • ** 直流信號的處理** :直流信號幅值(對應頻率0Hz)為兩部分共軛復數(shù)序列在頻率0Hz處的加和,其真實幅值再乘以2/N后還需要再除以2得到真實的直流信號幅值。

2. 函數(shù)

初學的朋友若不理解上述變換和處理技巧,很難得到正確的頻譜圖。為此作者在fft函數(shù)的基礎上,使用Matlab開發(fā)了函數(shù) DFT.m ,通過函數(shù)來實現(xiàn)上述幅值變換、有效頻率區(qū)域和直流信號的處理,能夠直接分析出給定離散信號x(n)的幅值譜和相位譜,函數(shù)簡單、易用、通用性好。

function [f,X_m,X_phi] = DFT(xn,ts,N,drawflag)
% [f,X_m,X_phi] = DFT(xn,ts,N,drawflag) 離散序列的快速傅里葉變換,時域轉(zhuǎn)換為頻域
% 輸入  xn為離散序列 為向量  
%       ts為序列的采樣時間/s
%       N為FFT變換的點數(shù),默認為xn的長度  
%       drawflag為繪圖標識位,取0時不繪圖,其余非0值時繪圖,默認為繪圖
% 輸出 f為頻率向量
%      X_m為幅值向量
%      X_phi為相位向量,單位為°
% 注意計算出來的0頻分量(直流分量應該除以2)  直流分量的符號應結(jié)合相位圖來確定

3. 演示

3.1 單頻正弦信號(整數(shù)周期采樣)

%% Eg 1 單頻正弦信號
ts = 0.01;
t = 0:ts:1;
A = 1.5;       % 幅值  
f = 2;         % 頻率
w = 2*pi*f;    % 角頻率
phi = pi/3;    % 初始相位 
x = A*cos(w*t+phi);   % 時域信號
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

正弦信號頻率為2Hz,頻譜分析頻率為1.98Hz
正弦信號幅值為1.5,頻譜分析幅值為1.495
正弦信號相位為60°,頻譜分析相位為63.32°

**3.2 **單頻正弦信號(非整數(shù)周期采樣)

%% Eg 2 單頻正弦信號(非整數(shù)周期采樣)
ts = 0.01;
t = 0:ts:1;
A = 1.5;       % 幅值  
f = 1.5;         % 頻率
w = 2*pi*f;    % 角頻率
phi = pi/3;    % 初始相位 
x = A*cos(w*t+phi);   % 時域信號
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

正弦信號頻率為1.5Hz,頻譜分析頻率為0.99Hz、1.98Hz
正弦信號幅值為1.5,頻譜分析幅值為1.034、0.923
正弦信號相位為60°,頻譜分析相位為160.93°、-33.76°

總結(jié):

DFT變換后頻率序列的最小單位刻度為f s /N(此例為1Hz),非整數(shù)周期采樣時關心信號的頻率(此例為1.5Hz)不是頻率分辨率f s /N的正整數(shù)倍,那這個頻率成分信號會由前后兩個正整數(shù)倍的頻率成分信號(此例為1Hz和2Hz)的線性組合來替代,這就是頻譜泄漏現(xiàn)象,非周期采樣時某頻率成分信號向兩側(cè)頻率分辨率正整數(shù)倍的頻點泄漏。實際頻譜分析時并不清楚所關心的頻率點精確值,避免此問題的一個解決方法是,取更多的點參加DFT,即時域序列x(n)長度N值取長一些,讓頻率分辨率f s /N很小,以減小頻譜泄漏現(xiàn)象。再看下例。

%% Eg 2 單頻正弦信號(非整數(shù)周期采樣)
ts = 0.01;
t = 0:ts:1;
A = 1.5;       % 幅值  
f = 1.5;         % 頻率
w = 2*pi*f;    % 角頻率
phi = pi/3;    % 初始相位 
x = A*cos(w*t+phi);   % 時域信號
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果: 頻譜泄漏情況大為改善,采樣點繼續(xù)增多時,頻譜泄漏會進一步減小。

正弦信號頻率為1.5Hz,頻譜分析頻率主要成分為1.46Hz、
正弦信號幅值為1.5,頻譜分析頻率主要成分對應幅值為1.41
正弦信號相位為60°,頻譜分析頻率主要成分對應相位為89.5°

3.3 含有直流分量的單頻正弦信號

%% Eg 3 含有直流分量的單頻正弦信號
ts = 0.01;
t = 0:ts:1;
A = 1.5;       % 幅值  
f = 5;         % 頻率
w = 2*pi*f;    % 角頻率
phi = pi/6;    % 初始相位 
x = 0.5 + A*cos(w*t+phi);   % 時域信號,帶有直流偏移0.5
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

正弦信號頻率為5Hz,頻譜分析頻率為4.95Hz
正弦信號幅值為1.5,頻譜分析幅值為1.498
正弦信號相位為30°,頻譜分析相位為38.66°
正弦信號直流分量0.5,頻譜分析直流分量為0.51

**3.4 **正弦復合信號

%% Eg 4 正弦復合信號
ts = 0.01;
t = 0:ts:2;
A = [1.5 1 0.5 0.2];    % 幅值  
f = [3 6 9 15];         % 頻率
w = 2*pi*f;             % 角頻率
phi = (1:4)*pi/4;       % 初始相位 
x = -0.5 + A(1)*cos(w(1)*t+phi(1)) + A(2)*cos(w(2)*t+phi(2)) + A(3)*cos(w(3)*t+phi(3)) + A(4)*cos(w(4)*t+phi(4));     % 時域信號
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

正弦信號頻率為3、6、9、15Hz,頻譜分析頻率為2.985、5.97、8.96、14.93Hz
正弦信號幅值為1.5、1、0.5、0.2,頻譜分析幅值為1.499、0.989、0.485、0.192
正弦信號相位為45°、90°、135°、180°,頻譜分析相位為50.6°、101.5°、152.9°、210°
正弦信號直流分量-0.5,頻譜分析直流分量為-0.497

注意 :頻率為0Hz時對應的直流信號的幅值的正負號,是通過零頻相位來確定的,相位為0°表示幅值為正,相位為180°表示幅值為負。

**3.5 **含有隨機干擾的正弦信號

%% Eg 5 含有隨機干擾的正弦信號
ts = 0.01;
t = 0:ts:2;
A = [1 0.5];    % 幅值  
f = [3 10];         % 頻率
w = 2*pi*f;             % 角頻率
phi = (1:2)*pi/3;       % 初始相位 
x =  A(1)*cos(w(1)*t+phi(1)) + A(2)*cos(w(2)*t+phi(2)) + 0.8*(rand(size(t))-0.5);     % 時域信號
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

正弦信號頻率為3、10Hz,頻譜分析頻率為2.985、9.95Hz
正弦信號幅值為1、0.5,頻譜分析幅值為0.978、0.456
正弦信號相位為60°、135°,頻譜分析相位為65.1°、139.8°

**3.6 **實際案例

load data
ts = 0.001;
x = Jsd;
t = [0:length(x)-1]*ts;
figure
plot(t,x)
xlabel('時間/s')
ylabel('時域信號x(t)')
% DFT變換將時域轉(zhuǎn)換到頻域,并繪制頻譜圖
[f,X_m,X_phi] = DFT(x,ts);

圖片

圖片

結(jié)果

頻譜分析主要頻率成分為18.996、37.992Hz
頻譜分析主要頻率成分對應幅值為1.741、1.117

該項目為作者在強振環(huán)境下測得加速度信號,加速度是機械結(jié)構(gòu)周期運動激勵產(chǎn)生,需要通過頻譜分析獲取機械結(jié)構(gòu)周期運動的頻率。由于噪聲幅度遠大于有效信號幅度,信號的信噪比很低,從時域上很難辨別機械結(jié)構(gòu)周期運動的頻率。但經(jīng)過DFT后,從頻域上可以看出信號的主要頻率成分為19Hz和其倍頻38Hz,可以判斷機械結(jié)構(gòu)周期運動的頻率為19Hz,38Hz為結(jié)構(gòu)響應的非線性特性所產(chǎn)生的倍頻。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 頻譜分析儀
    +關注

    關注

    16

    文章

    1085

    瀏覽量

    85212
  • MATLAB仿真
    +關注

    關注

    4

    文章

    175

    瀏覽量

    19891
  • 傅里葉變換
    +關注

    關注

    6

    文章

    429

    瀏覽量

    42540
  • 倍頻器
    +關注

    關注

    8

    文章

    76

    瀏覽量

    35455
  • DFT算法
    +關注

    關注

    0

    文章

    27

    瀏覽量

    7520
收藏 人收藏

    評論

    相關推薦

    用FFT對信號進行頻譜分析的實驗

    應用FFT對信號進行頻譜分析實驗實驗二 應用FFT對信號進行頻譜分析一、 實驗目的1、在理論學習的基礎上,通過本次實驗,加深對快速傅里葉變換的理解,熟悉FFT算法及其程序的編寫。2、熟悉應用FFT
    發(fā)表于 05-12 01:51

    非周期信號的頻譜分析傅里葉變換

    非周期信號的頻譜分析傅里葉變換.ppt
    發(fā)表于 10-03 23:11

    圖像頻率域分析傅里葉變換

    文章目錄傅里葉變換基礎傅里葉級數(shù)傅里葉積分傅里葉變換一維連續(xù)傅里葉變換一維離散傅里葉變換二維離散
    發(fā)表于 05-22 07:41

    快速傅里葉變換C語言實現(xiàn)

    快速傅里葉變換C語言實現(xiàn) 模擬采樣進行頻譜分析FFT是DFT的快速算法用于分析確定信號(時間連續(xù)可積信號、不一定是周期信號)的頻率(或相位、此處不研究相位)成分,且
    發(fā)表于 07-20 06:01

    離散傅里葉變換DFT在電阻網(wǎng)絡分析中到底起到什么作用

    看到一篇博文中對于無限電阻網(wǎng)絡求解相鄰節(jié)點阻抗中使用了離散傅里葉變換 (DFT) 的方法比較新穎。分析DFT在其中僅僅是起到描述線性時不變
    發(fā)表于 08-19 15:59

    離散傅里葉變換及其快速算法

    離散傅里葉變換及其快速算法離散傅里葉變換 (Discrete Fourier Transform,DFT)是時間函數(shù)是
    發(fā)表于 10-30 12:54 ?33次下載

    應用FFT對信號進行頻譜分析

    實驗 應用FFT對信號進行頻譜分析一、 實驗目的1、在理論學習的基礎上,通過本次實驗,加深對快速傅里葉變換的理解,熟悉FFT算法及其程序的編寫。2、熟悉
    發(fā)表于 05-10 10:00 ?64次下載

    離散傅里葉變換,(DFT)Direct Fouriet Tr

    離散傅里葉變換,(DFT)Direct Fouriet Transformer(PPT課件) 一、序列分類對一個序列長度未加以任何限制,則一個序列可分為:    無限長序列:n=-∞~∞或n=0~
    發(fā)表于 07-25 11:38 ?117次下載

    離散傅里葉變換(DFT)

    第3章--離散傅里葉變換(DFT)
    發(fā)表于 12-28 14:23 ?0次下載

    離散傅里葉變換(DFT)及其快速算法(FFT)

    第2章-離散傅里葉變換(DFT)及其快速算法(FFT)
    發(fā)表于 12-28 14:23 ?0次下載

    非周期信號的頻譜分析傅里葉變換

    非周期信號的頻譜分析傅里葉變換
    發(fā)表于 12-06 14:30 ?0次下載

    使用DFT分析離散信號頻譜的實驗資料免費下載

    應用離散傅里葉變換DFT),分析離散信號x[k]的頻譜。深刻理解
    發(fā)表于 08-06 17:16 ?12次下載
    使用<b class='flag-5'>DFT</b><b class='flag-5'>分析</b><b class='flag-5'>離散</b>信號<b class='flag-5'>頻譜</b>的實驗資料免費下載

    利用MATLAB進行頻分析的方法和步驟

    Matlab可以說是一個非常有用且功能齊全的工具,在通信、自控、金融等方面有廣泛的應用本文討論使用 Matlab對信號進行頻分析的方法說到頻域,不可避免的會提到
    發(fā)表于 07-30 10:27 ?4次下載
    <b class='flag-5'>利用</b><b class='flag-5'>MATLAB</b><b class='flag-5'>進行頻</b>域<b class='flag-5'>分析</b>的方法和<b class='flag-5'>步驟</b>

    傅里葉變換離散傅里葉變換的關系

    Fourier Transform,簡稱DFT)則是適用于離散信號的傅里葉變換方法。 傅里葉變換的基本原理是將一個連續(xù)的信號,分解成一系列簡單的正弦波或者余弦波。而這些正弦波和余弦波
    的頭像 發(fā)表于 09-07 17:04 ?2456次閱讀

    什么是實時頻譜分析儀呢?傅里葉變換(FFT)如何實現(xiàn)頻譜測量?

    什么是實時頻譜分析儀呢?傅里葉變換(FFT)如何實現(xiàn)頻譜測量? 實時頻譜分析儀是一種用于測量信號頻譜的儀器。它能夠?qū)⑿盘柕臅r域信息轉(zhuǎn)化為
    的頭像 發(fā)表于 01-19 15:50 ?2825次閱讀