天天看點

傅裡葉變換矩陣

1. matlab 的fft()函數是沒有歸一化的DFT

matlab 得到歸一化DFT矩陣

function F=DFT(N) %xn為序列
n = [0:N-1]; %n的行向量,為1*N矩陣
k = [0:N-1]; %k的行向量,為1*N矩陣
Wn = exp(-j*2*pi/N); %常數
nk = n'*k; %将n倒置之後與矩陣k進行矩陣的代數運算,為N*N矩陣,此處發生了N*N次乘法運算
Wnnk = Wn.^nk; %将常數Wn與nk進行點幂運算,為N*N矩陣,此處發生了N*N次點幂運算
F = Wnnk / sqrt(N);
           
K =  64;
F=DFT(K);
h_K = randn(K, 1);
H_F = F*h_K;
H_fft = fft(h_K) ./ sqrt(K);%fft做傅裡葉變換是非歸一化的
           

得到的值有輕微差别,但看起來是一樣的 

2.DFT矩陣F是對稱的,即F = F的轉置

3.矩陣A左乘DFT矩陣是對矩陣A的每一列做傅裡葉變換,矩陣A右乘DFT矩陣是對矩陣A的每一行做傅裡葉變換,如果A是對角陣,那麼左乘跟右乘是一樣的。