Matlab正弦波绘图

Matlab sin wave plotting

我是 matlab 的新手,如果这个问题很愚蠢,我很抱歉。搜了一下,没看清楚问题

我想使用间隔 int=(-20:20),它在 sin 波上有 41 个元素。 当我绘制 sin(int) 时,它绘制得很好,但是当我尝试绘制 sin(50*int) 时,即使 y 值的变化肯定比 sin(int) 大,但也没有。当我更改 int=(-100:100) 有 201 个元素时,仍然是同样的错误绘图。当我更改 int=(-10:0.1:10) 再次具有 201 元素

时,我只拍摄真实的情节

背后的原因是什么?

您正在查看名为 "aliasing" 的内容。 sin 是周期为 2*pi 的周期函数(因为它是弧度,而不是度数)。在你的一些情节中,你的 "x-values" (你并没有真正绘制,这不是很好)相距超过半个周期。

看看下面的情节:

figure;
hold all;
plot(int2, sin(int2), 'o-');
plot(int1, sin(int1), 'o-');


figure;
hold all;
plot(50*int2, sin(50*int2), 'o-');
plot(50*int1, sin(50*int1), 'o-');

您会看到,在两个图中,int2 的点与 int1 的点重合。然而,在第二个图中,int1 的几个点之间的线性插值描绘了一个实际上并不存在的正弦波。

您所描述的是一个名为 aliasing 的信号处理问题。

基本上,如果您对正弦波的采样频率不够高,离散化的正弦波的频率可能会低于实际连续波的频率:

要解决此问题,您必须 采样频率至少是信号频率 的两倍。 (参见 the sampling theorem。)

sin(x) 的频率为 1 rad/s,因此您必须至少采样 2 rad/s = 0.318 Hz,或每 3 个单位约 1 个样本。

int=(-20:20)满足这个要求,采样率为1Hz = 6.28 rad/s > 2 rad/s.

50*int-1000:50:1000 没有,因为它的采样率为 1/50 Hz = 0.1257 rad/s < 2 rads/s.