我正在嘗試獲得 sinc 函式的傅立葉變換,但我不知道為什么fft()(快速傅立葉變換)無法正常作業,因為它適用于基本的正弦函式。
這是我的代碼,生成的情節是空的:
function fourier_transform
Ts= 1/50000;
t = 0:Ts:.5-Ts;
% p = sin(40*t);
m = sin(100*t)./(100*t);
f = fft(m);
plot(t,abs(f));
end
uj5u.com熱心網友回復:
m(1)由 計算sin(0)/0,它等于NaN。
NaN表示“不是數字”,表示錯誤情況。您進行的任何計算NaN都會傳播該資訊NaN,以警告您在計算程序中某處出現錯誤。例如,sum(m)等于NaN。由于 FFT 的每個輸出元素都涉及對 的每個輸入的計算m,因此所有這些輸出元素也將NaN如此。
你的f就是全部NaN,plot只會跳過這些NaN點,因此不會產生任何輸出。
您可以通過以下兩種方式之一修復您的計算:
通過除以 避免除以零,
100*t 1e-9添加的非常小的值將防止為零但不會影響其他結果。m = sin(100*t)./(100*t 1e-9);知道這
m(1)涉及除以零并修復它。m = sin(100*t)./(100*t); m(1) = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318494.html
