我正在设计复合正弦波,例如
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 = 10
和Fs = 30
并使用plot(t,input);
现在由于某种原因,输出是正确的,但它不是正弦波,而是三角波(直线)。除此之外,输出是正确的。
修改
我刚刚发现,因为我在同一比例上绘制了两张图,第二张图中的错误搞砸了第一张图。
现在问题是使用以下方法过滤输入:
output = filtfilt(B,A,input);
为什么我在绘制它时没有给我任何东西(我也尝试使用filter
)?
答案 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
,您会得到这样的情节:
增加到Fs = 100
,情况有所改善:
对于Fs = 1000
而言,情节首先是你可能期望的:
请注意,对于以上所有内容,我使用了您提供的值Fm_1 = 5
和Fm_2 = 10
。