绘制正弦波时出错

Error with plotting a sine wave

我正在使用以下代码在 Matlab 中绘制正弦波,

   Fs = 12000;                       % sampling frequency in Hz
   dt = 1/Fs;                        % seconds per sample
   StopTime = 0.25;                  % seconds
   t = (0:dt:StopTime-dt)';          % seconds

   Fc = 5000;                        % hertz
   x = sin(2*pi*Fc*t);

   figure;                           % Plot the signal versus time:
   plot(t,x);
   xlabel('time (in seconds)');
   title('Signal versus Time');

代码通常可以正常工作,但是当我尝试绘制 5kHz 正弦波时,我得到以下结果:

我知道您需要采样频率至少是要绘制的最大频率的 2 倍(奈奎斯特定理)。那么为什么会这样呢?

您正在使用别名。您的采样频率需要比您想要绘制的最大频率高得多,才能获得 "smooth" 图。

对于 5 kHz 正弦波,您需要至少 50 kHz 的采样频率,即使那样也不是很多(每个周期只有 10 个数据点)。 100 kHz 将为您提供每个周期 20 个数据点,这可能看起来不错: