在MATLAB中計算離散傅里葉變換時出現問題,顯然得到正確的結果,但當繪製所獲得頻率的幅度時,您可以看到非常接近零的值,它應該完全爲零。我用我自己的實現:我知道使用MATLAB的fft更好,但我需要使用我自己的實現,因爲它是爲大學。在MATLAB中使用DFT產生的意外結果
我用來產生方波代碼:
x = [ones(1,8), -ones(1,8)];
for i=1:63
x = [x, ones(1,8), -ones(1,8)];
end
MATLAB版本:R2013a(8.1.0.604)64位
我已嘗試發生在我身上的一切,但我沒有很多使用MATLAB的經驗,我還沒有在論壇中發現與此問題有關的信息。我希望有一個人可以幫助我。
在此先感謝。
我認爲這是一個數值問題。由於這些值在'1e-15'的範圍內,而峯值的幅度大約爲'656',所以我不會打擾太多。 MATLAB FFT和你的DFT程序之間的平方誤差的總和在'1e-20'的範圍內,所以基本上爲零。但也許別人有更詳細的消除? – hbaderts
我同意@hbaderts。這些值非常小,幾乎和* eps *一樣小,並且在這裏可以被認爲是0。你的FFT解決方案看起來很棒 – siliconwafer
感謝您的回答,我知道這個值是微不足道的,並不顯示在情節,但是當我想繪製角度函數的相位獲得無意義的結果。我使用y((y <0.00001)&(y> -0.00001))= 0來隱藏這個值,但它不是一個優雅的解決方案。 –