日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DFT泄露问题和DFT的频率轴表示方法(第三章离散傅里叶变换(3.8,3.13.4)学习笔记)

發布時間:2025/4/5 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DFT泄露问题和DFT的频率轴表示方法(第三章离散傅里叶变换(3.8,3.13.4)学习笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、DFT泄露原因
  • 2、DFT的頻率軸
    • 1、以Hz為單位的頻率軸
    • 2、以Fs歸一化的DFT頻率軸
    • 3、使用歸一化角度的DFT頻率軸

1、DFT泄露原因

一個被稱之為“”泄露“”的特性使得DFT結果只是數字采樣前原始輸入信號真實譜的近似。

我們知道分析頻率是 f(analysis)=(mFs)/N (m取整數)
如果輸入信號在分析頻率 mFs/N 上存在信號分量,如1.5Fs/N(m非整數的地方) ,那么在某種程度上這個輸入信號將會在DFT所有N個輸出分析頻率樣值上出現。

clear;%清除內存 close all;%關閉所有圖形 x=sin(2*pi*(0:63)*3/64);%產生某時段的正弦信號;連續信號頻率3 采樣頻率10 figure; plot(x);%畫圖 grid on;%并打網格 title('時域可分信號','FontSize',14); ylabel('x(n)','FontSize',14); xlabel('n','FontSize',14);%標注X軸,Y軸坐標 xf=fft(x,64);%FFT(X,N)是N點的FFT,如果X小于0,就用0填充 figure; plot((0:63)*64/64,abs(xf(1:64))); grid on;%畫圖 xlabel('KHZ','FontSize',14); ylabel('信號頻譜','FontSize',14);%標注XY軸坐標 title('信號頻譜','FontSize',14);

下面把連續信號改為3.4,頻譜精度為1,這樣分辨率就不夠了,產生了泄露,從公式上來講m只能取整數,取不到3.4。

clear;%清除內存 close all;%關閉所有圖形 x=sin(2*pi*(0:63)*3.4/64);%產生某時段的正弦信號;連續信號頻率3.4 采樣頻率64 figure; plot(x);%畫圖 grid on;%并打網格 title('時域可分信號','FontSize',14); ylabel('x(n)','FontSize',14); xlabel('n','FontSize',14);%標注X軸,Y軸坐標 xf=fft(x,64);%FFT(X,N)是N點的FFT,如果X小于0,就用0填充 figure; plot((0:63)*64/64,abs(xf(1:64))); grid on;%畫圖 xlabel('KHZ','FontSize',14); ylabel('信號頻譜','FontSize',14);%標注XY軸坐標 title('信號頻譜','FontSize',14);


現在我們再來更改輸入序列,看是否會導致頻譜泄露。
現在把輸入序列的點數改為201個點,大于了做FFT的64個點。分辨率是1hz

clear;%清除內存 close all;%關閉所有圖形 x=sin(2*pi*(0:200)*3/64);%產生某時段的正弦信號;連續信號頻率3 采樣頻率64 figure; plot(x);%畫圖 grid on;%并打網格 title('時域可分信號','FontSize',14); ylabel('x(n)','FontSize',14); xlabel('n','FontSize',14);%標注X軸,Y軸坐標 xf=fft(x,64);%FFT(X,N)是N點的FFT,如果X小于0,就用0填充 figure; stem((0:63)*64/64,abs(xf(1:64))); grid on;%畫圖 xlabel('KHZ','FontSize',14); ylabel('信號頻譜','FontSize',14);%標注XY軸坐標 title('信號頻譜','FontSize',14);


并不產生DFT泄露。
下面,我們再把輸入序列的點數小于做FFT的點數。改為61個輸入序列點,發生泄露
clear;%清除內存
close all;%關閉所有圖形
x=sin(2pi(0:60)*3/64);%產生某時段的正弦信號;連續信號頻率0.5 采樣頻率10
figure;
plot(x);%畫圖
grid on;%并打網格
title(‘時域可分信號’,‘FontSize’,14);
ylabel(‘x(n)’,‘FontSize’,14);
xlabel(‘n’,‘FontSize’,14);%標注X軸,Y軸坐標
xf=fft(x,64);%FFT(X,N)是N點的FFT,如果X小于0,就用0填充
figure;
plot((0:63)*64/64,abs(xf(1:64)));
grid on;%畫圖
xlabel(‘KHZ’,‘FontSize’,14);
ylabel(‘信號頻譜’,‘FontSize’,14);%標注XY軸坐標
title(‘信號頻譜’,‘FontSize’,14);


下面我們把采樣率也改改,看與FFT的點數有什么關系么?
clear;%清除內存
close all;%關閉所有圖形
x=sin(2pi(0:63)*3.5/32);%產生某時段的正弦信號;連續信號頻率3.5 采樣頻率32
figure;
plot(x);%畫圖
grid on;%并打網格
title(‘時域可分信號’,‘FontSize’,14);
ylabel(‘x(n)’,‘FontSize’,14);
xlabel(‘n’,‘FontSize’,14);%標注X軸,Y軸坐標
xf=fft(x,64);%FFT(X,N)是N點的FFT,如果X小于0,就用0填充
figure;
plot((0:63)*32/64,abs(xf(1:64)));
grid on;%畫圖
xlabel(‘KHZ’,‘FontSize’,14);
ylabel(‘信號頻譜’,‘FontSize’,14);%標注XY軸坐標
title(‘信號頻譜’,‘FontSize’,14);

通過上面的實際仿真,我們驗證了DFT泄露有兩種原因,
第一原因,就是Fs/N分辨率不夠。
第二原因,就是輸入序列的點數小于了做FFT的點數。

特別提醒:與輸入序列是不是一個周期沒有關系!,這種情況依然能夠輸出正常的DFT。
輸入序列是一個完整周期或者非完整周期均可。你不信!我們實驗數據來看看。
下面是輸入序列N=71個點。肯定不是整的周期吧


**下面是頻譜,清晰可見!沒有泄露!!!!!**這里只取了一半

所以,我們可以得出造成泄露的兩大原因:1,點數小于了FFT點數。2 分辨率不夠
另外,我們再想一下那個公式k代表啥k,就是代表的就是真實模擬頻率!模擬頻率如果剛好等于頻譜數字化的頻率m,落在了分辨率上,那么,就不會造成泄露!

實際信號中,我們的信號頻率不可能剛好在一個整數上,說不定是3.11111111hz,不可能剛好精確3hz,所以必然產生分辨力不夠的問題,從而必然產生DFT泄露。
這里,我還要額外補充一點,書中說,周期輸入信號和非周期輸入信號也會導致DFT泄露,這一點,其實是這樣的,如果點數足夠大于了FFT點數,且滿足了頻率分辨率的情況下,確實是存在這樣的情況,由周期影響,但是,現實生活中,由于噪聲總是存在的,根本就沒有理想的周期信號,所以一段看似周期的信號都是不能代表原始信號的,所以必然存在頻譜泄露。

2、DFT的頻率軸

1、以Hz為單位的頻率軸

以HZ為單位,Fs/N,即為分辨率,長度為Fs為一個周期循環。

2、以Fs歸一化的DFT頻率軸

以Fs歸一化的DFT,需要將信號的頻率f /Fs 進行歸一化,最大頻率為1,以1為一個循環,分辨率是1/N,單位為周期/樣值。

3、使用歸一化角度的DFT頻率軸

頻率變量為w,頻率分辨率是2π/N,重復間隔是2π,以2π為一個循環。

總結

以上是生活随笔為你收集整理的DFT泄露问题和DFT的频率轴表示方法(第三章离散傅里叶变换(3.8,3.13.4)学习笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。