繁体   English   中英

为什么 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM