matlab中用三角波代替正弦波作图
我正在设计复合正弦波,例如matlab中用三角波代替正弦波作图,matlab,plot,trigonometry,Matlab,Plot,Trigonometry,我正在设计复合正弦波,例如 input=sin(2*pi*Fm_1*t)+sin(2*pi*Fm_2*t) 其中,Fm_1和Fm_2由用户和 t=0:Ts:2*Tm; 在哪里 和Fm_1=5和Fm_2=10和Fs=30 并使用plot(t,输入)进行绘图 出于某种原因,输出是正确的,但不是正弦波,而是三角波(直线)。除此之外,输出是正确的 编辑: 我刚刚发现,因为我在同一比例上绘制了两张图,第二张图中的一个错误使第一张图出错 现在的问题是使用以下方法过滤输入: output = filtf
input=sin(2*pi*Fm_1*t)+sin(2*pi*Fm_2*t)代码>
其中,Fm_1和Fm_2由用户和
t=0:Ts:2*Tm;
在哪里
和Fm_1=5
和Fm_2=10
和Fs=30
并使用plot(t,输入)进行绘图代码>
出于某种原因,输出是正确的,但不是正弦波,而是三角波(直线)。除此之外,输出是正确的
编辑:
我刚刚发现,因为我在同一比例上绘制了两张图,第二张图中的一个错误使第一张图出错
现在的问题是使用以下方法过滤输入:
output = filtfilt(B,A,input);
为什么当我绘制它时(我也尝试过使用过滤器)?如上所述,问题是您使用的采样频率太低,无法绘制详细的图形。您可以使用下面的函数看到这一点:
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
。您的Fs
可能很小。增加它,然后重试。它又是一个三角波吗?我用Fs=300重试。。情节完全变了。成为水平线您的Ts
应该非常小,以使绘图平滑。两个不同频率的正弦波之和不会成为另一个正弦波。@user1111726如果您有新问题,请分别发布。不要把现有的帖子改为包含这两个问题,否则会让你更难回答。。增加采样频率会完全改变绘图。。使用MATLAB 7将绘图变成水平线I。。这可能是这个错误的原因吗?好的。。我刚发现。。那是因为我在同一比例上画了两张图。。由于第二张图是错误的,它把第一张图弄糟了。请参见编辑
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