[英]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
点,因此不会产生任何输出。
您可以通过以下两种方式之一修复您的计算:
通过除以100*t + 1e-9
避免除以零,添加的非常小的值将防止为零,但不会影响其他结果。
m = sin(100*t)./(100*t + 1e-9);
知道m(1)
涉及除以零并修复它。
m = sin(100*t)./(100*t); m(1) = 1;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.