1

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

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)?

4

1 回答 1

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

在此处输入图像描述

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

在此处输入图像描述

对于Fs = 1000情节,您可能首先会期望:

在此处输入图像描述

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

于 2012-12-19T19:25:10.630 回答