正弦波变幅matlab

正弦波变幅matlab,matlab,trigonometry,amplitude,Matlab,Trigonometry,Amplitude,我试图理解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

我试图理解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值有关。到底是什么


谢谢

您正在使用
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

您正在使用
0.001
作为时间步长。您正在构建
(2*pi*500*t)
的正弦。结果是:
(2*pi*500/1000=pi)
(2*pi*500*2/1000)=2pi)
。这是没有用的。将频率(Fc)更改为更小的值,例如50或使用更小的时间步长,从而将Fs更改为5000,或仅将dt定义为1/5*Fs。@最小值就是这个答案。获得的值在0到数值精度范围内