2

我试图理解 fft 函数,因为我有一个非常简单的代码来生成 500Hz 的正弦波。

%Time specifications:
   Fs = 1000;                   % samples per second
   dt = 1/Fs;                   % seconds per sample
   StopTime = 0.6;             % seconds
   t = (0:dt:StopTime-dt)';     % seconds
    % Sine wave:
   Fc = 500;                     % hertz
   x = sin(2*pi*Fc*t);
   % Plot the signal versus time:
   figure;
   plot(t,x);
   xlabel('time (in seconds)');
   title('Signal versus Time');
   zoom xon;

现在,它的输出给我一个正弦波,其幅度随时间增加。

这是为什么?当我没有为幅度添加任何因素时。我知道这与 Fs 值有关。究竟是什么?

谢谢

4

1 回答 1

6

您正在使用0.001作为时间步长。您正在构建(2*pi*500*t). 这导致:

2*pi*500/1000=pi,
2*pi*500*2/1000=2pi,
2*pi*500*3/1000 =3pi,
...

作为前 3 个数据点的值。这将持续到最后。正如 Luis Mendo 在他的评论中所说,在数值精度范围内,这些值为 0。这只是没有用。将您的频率(Fc)更改为某事。较小的例如50或使用较小的时间步长,从而更改Fs=5000或仅定义dt=1/5*Fs.

于 2014-07-02T11:37:47.000 回答