在matlab中用三角波图代替正弦波

时间:2012-12-19 17:45:23

标签: matlab plot sin

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

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 = 5以及Fm_2 = 10Fs = 30 并使用plot(t,input);

绘图

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

修改

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

现在问题是使用以下方法过滤输入:

  output = filtfilt(B,A,input);

为什么我在绘制它时没有给我任何东西(我也尝试使用filter)?

1 个答案:

答案 0 :(得分:3)

正如上面的评论中所提到的,问题是您使用的采样频率太低来绘制详细图表。您可以使用以下功能查看:

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,您会得到这样的情节:

enter image description here

增加到Fs = 100,情况有所改善:

enter image description here

对于Fs = 1000而言,情节首先是你可能期望的:

enter image description here

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