我是matlab的新手,如果这个问题太愚蠢,请对不起。我搜索它,但我无法清楚地理解这个问题。
我想使用interval int =( - 20:20),它在sin wave上有41个元素。 当我绘制sin(int)时它绘制得很好,但是当我尝试绘制sin(50 * int)时,即使y值必须比sin(int)有很多变化,也没有。当我改变int =( - 100:100)有201个元素时,仍然是同样错误的绘图。当我改变int =( - 10:0.1:10)再次有201元素
时,我只采用真实的情节背后的原因是什么?
答案 0 :(得分:5)
您所描述的是名为aliasing的信号处理问题。
基本上,如果你不经常对正弦波进行采样,那么离散正弦波的频率似乎低于实际连续波的频率:
要解决此问题,您必须至少以信号频率的两倍采样。 (见the sampling theorem。)
sin(x)
的频率为1 rad / s,因此您必须至少采样2 rad / s = 0.318 Hz,或每3个采样约1个样本。
int=(-20:20)
满足此要求,采样率为1 Hz = 6.28rad / s> 2 rad / s。
50*int
或-1000:50:1000
没有,因为它的采样率为1/50 Hz = 0.1257 rad / s <1。 2 rads / s。
答案 1 :(得分:3)
您正在寻找名为&#34;别名&#34;的内容。 sin
是一个周期函数,周期为2 * pi(因为它以弧度表示,而不是以度为单位)。在你的一些情节中你的&#34; x值&#34; (你没有真正的情节,这不是那么好)比半个时期更远。
看一下以下图:
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的几个点之间的线性插值描绘了一个实际上不存在的正弦波。