为什么 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
点,因此不会产生任何输出。
您可以通过以下两种方式之一修复您的计算:
通过除以 100*t + 1e-9
避免被零除,添加的非常小的值将防止零但不会影响其他结果。
m = sin(100*t)./(100*t + 1e-9);
知道 m(1)
涉及除以零并修复它。
m = sin(100*t)./(100*t);
m(1) = 1;
我正在尝试获取 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;