傅氏變換分析是訊號分析中很重要的方法,借助matlab可以很方便的對各類訊號進行傅氏頻域分析。本文介紹了集中離散的傅氏變換以及matlab實現方法。
1.離散序列的傅利葉變換dtft(discrete time fourier transform)
**:
1 n=8; %原離散訊號有8點結果:2 n=[0:1:n-1] %原訊號是1行8列的矩陣
3 xn=0.5.^n; %構建原始訊號,為指數訊號
45 w=[-800:1:800]*4*pi/800; %頻域共-800----+800
的長度(本應是無窮,高頻分量很少,故省去)
6 x=xn*exp(-j*(n'
*w)); %求dtft變換,採用原始定義的方法,對復指數分量求和而得
7 subplot(311)8
stem(n,xn);
9 title('
原始訊號(指數訊號)');
10 subplot(312
);11 plot(w/pi,abs(x));
12 title('
dtft變換
')
分析:可見,離散序列的dtft變換是週期的,這也符合nyquist取樣定理的描述,連續時間訊號經週期取樣之後,所得的離散訊號的頻譜是原連續訊號頻譜的週期延拓。
2.離散傅利葉變換dft(discrete fourier transform)
與1中dtft不一樣的是,dtft的求和區間是整個頻域,這對計算機的計算來說是不可以實現的,dft就是序列的有限傅利葉變換。實際上,1中我給的**也只是對頻域的-800----+800中間的1601點求了和,也不是無數次求和。
實現**:
n=8; %原離散訊號有8點
n=[0:1:n-1] %原訊號是1行8列的矩陣
xn=0.5.^n; %構建原始訊號,為指數訊號
w=[-8:1:8]*4*pi/8; %頻域共-800----+800 的長度(本應是無窮,高頻分量很少,故省去)
x=xn*exp(-j*(n'*w)); %求dtft變換,採用原始定義的方法,對復指數分量求和而得
subplot(311)
stem(n,xn);
w1=[-4:1:4]*4*pi/4;
x1=xn*exp(-j*(n'*w1));
title('原始訊號(指數訊號)');
subplot(312);
stem(w/pi,abs(x));
title('原訊號的16點dft變換')
subplot(313)
stem(w1/pi,abs(x1));
title('原訊號的8點dft變換')
結果圖:
分析:dft只是dtft的現實版本,因為dtft要求求和區間無窮,而dft只在有限點內求和。
3.快速傅利葉變換fft(fast fourier transform)
雖然dft相比dtft縮減了很大的複雜度,但是任然有相當大的計算量,不利於資訊的實時有效處理,2023年發現的dft解決了這一問題。
實現**:
1 n=64; %原離散訊號有8點效果圖:2 n=[0:1:n-1] %原訊號是1行8列的矩陣
3 xn=0.5.^n; %構建原始訊號,為指數訊號
4 xk=fft(xn,n);
5 subplot(221);6
stem(n,xn);
7 title('
原訊號'
);8 subplot(212);9
stem(n,abs(xk));
10 title('
fft變換
')
分析:由圖可見,fft變換的頻率中心不在0點,這是fft演算法造成的,把fft改為fftshift可以將頻率中心移到0點。
用matlab對訊號進行傅利葉變換
傅氏變換分析是訊號分析中很重要的方法,借助matlab可以很方便的對各類訊號進行傅氏頻域分析。本文介紹了集中離散的傅氏變換以及matlab實現方法。1.離散序列的傅利葉變換dtft discrete time fourier transform 1 n 8 原離散訊號有8點 2 n 0 1 n 1 ...
離散週期訊號的傅利葉級數 DFS
目錄序言 引入離散週期訊號的傅利葉級數 成諧波關係的離散週期復指數序列 週期訊號的傅利葉級數表示 離散週期訊號的傅利葉級數係數及其確定過程 這篇文章的思路是按照與連續時間週期訊號的傅利葉級數一致的,看完這篇博文的基礎上,再看離散時間復指數序列的週期性質,了解了離散時間復指數序列的週期性後,就可以很簡...
matlab 快速傅利葉反變換函式(ifft)編寫
歡迎指正 matlab 編寫快速傅利葉反變換函式 ifft 橫向讀取資料進行變換 matlab 快速傅利葉逆變換,不夠2的整數冪的個數,末尾自動補齊0 function ret val myifft vector 因為輸入的資料可能不是2的整數次冪,補零使得計算更加方便 m,n size vecto...