方案一:
% dftm
sig = ones(256,1);
t=-8:timeslice:8-timeslice;
f=t;
nfft=256;
sig=cos(2*pi*1*t);
dft=zeros(nfft,nfft);
n=[0:nfft-1]; %n的行向量,為1*n矩陣
k=[0:nfft-1]; %k的行向量,為1*n矩陣
wn=exp(-j*2*pi/nfft); %常數
nk=n'*k; %將n倒置之後與矩陣k進行矩陣的代數運算,為n*n矩陣,此處發生了n*n次乘法運算
dft=wn.^nk; %將常數wn與nk進行點冪運算,為n*n矩陣,此處發生了n*n次點冪運算
ft=abs(dft*sig.');
plot(ft);
方案二(效率差):
clc;clear all;
clc;
timeslice=16/256;
sig = ones(256,1);
t=-8:timeslice:8-timeslice;
f=t;
nfft=256;
sig=cos(2*pi*1*t);
dft=zeros(nfft,nfft);
for a=1:nfft
for b=1:nfft
dft(a,b)=exp(-j*2*pi/nfft*(a-1)*(b-1));
endend
ft=abs(dft*sig.');
plot(ft);
離散傅利葉變換 快速傅利葉變換C 實現
傅利葉變換是將時域訊號變換為頻域訊號的一種方式,我主要用它來做兩件事情 1 求一段資料的週期性。2 通過傅利葉變換及其逆變換,進行低通濾波 去躁 首先需要做幾點說明 1.快速傅利葉變換是離散傅利葉變換的快速演算法,當資料來源較大時 大於1000 快速傅利葉變換有明顯優勢。2.快速傅利葉變換的訊號源長...
匯出離散傅利葉變換(DFT)的兩種方法
在這裡首先確定dft的物件為乙個有限長的離散非週期序列,這主要因為計算機處理的都是有限長的離散序列。如果你要處理的序列本身不是離散非週期的序列,可以通過擷取或者離散化等方法獲得所需的有限長的離散非週期序列。對於有限長的離散非週期序列存在兩種計算n點dft的方法,一種方法是先將其通過dtft獲得序列的...
離散時間傅利葉變換DTFT實現
使用matlab軟體畫出頻譜圖 x zeros 1,3 m ones 1,n zeros 1,3 m 給出輸入序列 w 15 0.1 15 1e 10 x sin 0.5 n w t sin 0.5 w t 給出頻譜序列 subplot 1,3,1 stem n,x,畫出輸入序列 axis 20,2...