【问题标题】:Matlab sin wave plottingMatlab 正弦波绘图
【发布时间】:2015-03-04 19:41:31
【问题描述】:

如果问题太愚蠢,我是 matlab 的新手。我搜索了一下,但我无法清楚地理解这个问题。

我想使用区间 int=(-20:20),它在 sin 波上有 41 个元素。 当我绘制 sin(int) 时,它绘制得很好,但是当我尝试绘制 sin(50*int) 时,即使 y 值必须比 sin(int) 有很多变化,但没有。当我更改 int=(-100:100) 有 201 个元素时,仍然是相同的错误绘图。当我更改 int=(-10:0.1:10) 再次具有 201 元素时,我才采取真正的情节

背后的原因是什么?

【问题讨论】:

  • 您知道sin 函数采用弧度而不是度数的参数吗?

标签: matlab plot trigonometry


【解决方案1】:

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

基本上,如果您没有足够频繁地对正弦波进行采样,则离散正弦波的频率可能会低于实际连续波的频率:

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

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

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

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

【讨论】:

  • 喜欢那张照片。 +1。
  • @rayryeng 我一次又一次地搜查维基百科以获得我的 SO 答案。 ;)
  • lmao .那个图是维基百科的吗?不错。
【解决方案2】:

您正在查看称为“别名”的东西。 sin 是一个周期为 2*pi 的周期函数(因为它的单位是弧度,而不是度数)。在您的某些图中,您的“x 值”(您并没有真正绘制,这不太好)相距超过半个周期。

看看下面的图:

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 的几个点之间的线性插值绘制了一个实际上并不存在的正弦波。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多