Matlab正弦波绘图

时间:2015-03-04 19:41:31

标签: matlab plot sin

我是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元素

时,我只采用真实的情节

背后的原因是什么?

2 个答案:

答案 0 :(得分:5)

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

基本上,如果你不经常对正弦波进行采样,那么离散正弦波的频率似乎低于实际连续波的频率:

enter image description here

要解决此问题,您必须至少以信号频率的两倍采样。 (见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的几个点之间的线性插值描绘了一个实际上不存在的正弦波。