Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab中用三角波代替正弦波作图_Matlab_Plot_Trigonometry - Fatal编程技术网

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