为什么 Matlab 函数 fft() 不适用于某些方程式

Why is Matlab Function fft() not working for certain equations

我正在尝试获取 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 

m(1)sin(0)/0 计算得出,等于 NaN.

NaN 表示“不是数字”,表示错误情况。您使用 NaN 进行的任何计算都会传播 NaN,以警告您在计算过程中某处出现错误。例如,sum(m) 等于 NaN。由于 FFT 的每个输出元素都涉及每个输入 m 的计算,因此所有这些输出元素也将是 NaN

您的 f 全部是 NaN,而 plot 将跳过 NaN 点,因此不会产生任何输出。

您可以通过以下两种方式之一修复您的计算:

  1. 通过除以 100*t + 1e-9 避免被零除,添加的非常小的值将防止零但不会影响其他结果。

     m = sin(100*t)./(100*t + 1e-9);
    
  2. 知道 m(1) 涉及除以零并修复它。

     m = sin(100*t)./(100*t);
     m(1) = 1;