【问题标题】:Triangular wave graphed instead of Sin wave in matlab三角波图而不是matlab中的正弦波
【发布时间】:2012-12-19 17:45:22
【问题描述】:

我正在设计复合正弦波,例如

input=sin(2*pi*Fm_1*t) + sin(2*pi*Fm_2*t);

其中 Fm_1 和 Fm_2 由用户给出,

t=0:Ts:2*Tm;

在哪里

Ts=1/Fs;
Tm=1/(maxof(Fm_1,Fm_2) (NOT A FUNCTION, just to explain)

Fm_1 = 5Fm_2 = 10Fs = 30 并使用plot(t,input);进行绘图

现在由于某种原因,输出是正确的,但不是正弦波,而是三角波(直线)。除此之外,输出是正确的。

编辑:

我刚刚发现,因为我以相同的比例绘制了两张图,所以第二张图中的错误搞砸了第一张。

现在的问题是使用这个过滤输入:

  output = filtfilt(B,A,input);

为什么当我绘制它时它什么也没给我(我也尝试过使用filter)?

【问题讨论】:

  • 您的Fs 可能很小。增加它并重试。又是三角波吗?
  • 我重试使用 Fs=300 .. 情节完全改变了。变成了一条水平线
  • 您的Ts 应该非常小,以使您的情节顺利。
  • 两个不同频率的正弦波之和不会是另一个正弦波。
  • @user1111726 如果您有问题,请单独发布。不要更改现有帖子以包含这两个问题,否则会更难回答。

标签: matlab plot trigonometry


【解决方案1】:

如上面的 cmets 所述,问题在于您使用的采样频率太低,无法绘制详细的图表。您可以使用以下函数看到这一点:

function myplot(Fm_1, Fm_2, Fs)
  Ts = 1/Fs;
  Tm = 1/max(Fm_1,Fm_2);
  t = 0:Ts:2*Tm;
  input = sin(2*pi*Fm_1*t) + sin(2*pi*Fm_2*t);
  plot(t, input);
end

如您所见,对于Fs = 30,您会得到这样的情节:

增加到Fs = 100,情况好转:

对于Fs = 1000,情节是你可能首先想到的:

请注意,对于以上所有内容,我都使用了您提供的值 Fm_1 = 5Fm_2 = 10

【讨论】:

  • 由于某种原因..增加采样频率完全改变了情节..情节变成了一条水平线
  • 我使用的是 MATLAB 7.. 这可能是导致此故障的原因吗?
  • 好吧..我刚刚发现..因为我在相同的比例上绘制了两个图..第二个图是错误的,它搞砸了第一个..请参阅编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2019-08-13
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多