如何使用MATLAB创建复合信号?

如何使用MATLAB创建复合信号?,matlab,Matlab,如果我有两个我以前生成的信号,我怎么能把它们合成一个复合信号呢。 根据我的理解,复合信号是让两个信号出现在同一个图上(重叠) 那么,产生这种复合信号所需要的语法是什么呢 注:poth信号具有相同的时间间隔。在绘制第二个曲线图时,需要使用该函数保留第一个曲线图。下面是一个例子: x=linspace(0,2*pi,1e3); plot(x,sin(2*x)) hold on plot(x,cos(2*x),'r') hold off hold off释放“hold”,如果现在打印任何内容,则不会

如果我有两个我以前生成的信号,我怎么能把它们合成一个复合信号呢。 根据我的理解,复合信号是让两个信号出现在同一个图上(重叠) 那么,产生这种复合信号所需要的语法是什么呢

注:poth信号具有相同的时间间隔。

在绘制第二个曲线图时,需要使用该函数保留第一个曲线图。下面是一个例子:

x=linspace(0,2*pi,1e3);
plot(x,sin(2*x))
hold on
plot(x,cos(2*x),'r')
hold off
hold off
释放“hold”,如果现在打印任何内容,则不会保留以前的打印。最好的做法是释放保持,这样您就不会无意中对多个绘图进行分层(当然,除非是出于此目的)


如果你有两个振幅范围很广的信号,一个选择是缩放它们,使它们具有可比的振幅。这可以通过以下方式实现:例如,将两者规格化为最大值1。例如:

x=linspace(0,2*pi,1e3);
y=100*sin(2*x);
z=cos(2*x);
plot(x,y/max(abs(y)),x,z/max(abs(z)))
您可能需要记下或提及(无论您在何处使用此选项)信号已被规范化,以便清晰可见

或者,您也可以使用该功能绘制两条曲线,每条曲线都有一个y轴。例如:

x=linspace(0,2*pi,1e3);
y=100*sin(2*x);
z=cos(2*x);
plotyy(x,y,x,z)

编辑2:

要更改
plotyy
中的颜色,需要使用线的句柄。继续上面的例子

[ax,h1,h2]=plotyy(x,y,x,z);
set(h1,'color','m')
set(h2,'color',[0,0.5,0])
这里我展示了两种设置颜色的方法。一种是使用内置的颜色字符串(
'r'
->红色、
'm'
->洋红、
'c'
->青色、
'g'
->绿色、
'b'
->蓝色、
'y'
->黄色、
'k'
->黑色、
'w'
->白色),另一种是由3个元素的数值RGB向量表示的,其值范围为0到1

有时,最好不要将y轴着色(我不喜欢这样)。要将它们更改为黑色,请将
ax
'ycolor'
属性的值设置为黑色

set(ax,'ycolor','k')

如果我没有误解的话,你正在寻找这样的东西:

% x and y (of equal length) represent the samples of two signals
% at the same points in time. 
Lx = length(x);
dt = 2;            % Interval between samples (inverse of sampling frecuency).
t = (0:Lx-1) * dt; % This will be the horizontal variable.
plot(t, x, 'b;Signal x;', t, y, 'r;Signal y;');

你对“复合”的定义是什么?你的信号是加法的还是乘法的?或者你只想在同一个图上显示两个信号?是的,只想在同一个图上显示两个信号这很有用,但我还有一个问题,在我绘制合成信号后,其中一个信号在y轴上有一个非常大的比例(-100-->100),这会使另一个信号超出比例(-1-->1)我怎样才能解决这个问题problem@Shadi:您可以尝试使用命令,该命令以不同的y轴比例绘制每条曲线。在这种情况下,有两个y轴,一个在左侧,一个在右侧。我将添加一个示例。@Shadi:不,在这种情况下,您不必使用
hold-on
hold-off
。事实上,即使在第一个示例中,也可以不使用hold as
plot(x,sin(2*x),'b',x,cos(2*x),'r')来绘制它。我提到了
hold
,因为它是一个更通用的解决方案,在其他几种情况下也会很有用。你是说plotyy(…),yoda你帮了我很大的忙谢谢Oda,再一次抱歉,当我运行程序时没有颜色,它工作正常,但是颜色给了我一个错误