在matlab中绘制具有不同轴和极限的两个信号

时间:2015-03-13 21:58:15

标签: matlab plot axes

让我们考虑我在同一个图表上绘制两个信号,这些信号有不同的限制因此我想要不同的轴

plot(a)
axis ([-2 10 -2 8])
hold 'on'
plot(b)
axis ([-1 4 -4 7])
hold 'off'

其中' a'和' b'是两个信号表达。这里的问题是信号正在获得绘图,但只有第二个轴正在工作,而绘图a并不仅限于第一个指定的轴。原因是第二轴显然会覆盖第一个轴,但是任何想法如何用两个轴限制绘制两个信号?

4 个答案:

答案 0 :(得分:0)

您可以使用逻辑运算符选择要绘制的数据。

让我们考虑情节a的情况。

bs的每一列分配给变量:

x1 = bs(:,1)
y1 = bs(:,2)

然后仅选择满足指定条件的值:

xPlot = x1(x1 > -2 & x1 < 10)
yPlot = y1(y1 > -2 & y1 < 8)

假设它们都包含相同数量的元素,则可以绘制它们。

如果没有,您需要使用Nan填充较小的数组,以避免出现有关尺寸不匹配的错误。

一旦知道哪个阵列较小,就可以按如下方式进行。我们假设xPlot小于yPlot

m = max(numel(xPlot),numel(yPlot)) %// Just getting the larger dimension
xPlot(numel(xPlot)+1:m) = NaN

现在你可以打电话了

plot(xPlot,yPlot,'b-','LineWidth',2)

这应该有效。这同样适用于b情节。

希望有所帮助!

答案 1 :(得分:0)

您可能需要查看plotyy以获得2个不同的y轴。

如果你的情节中没有任何共同点,也许你应该在两个不同的轴上绘制它们,比如

figure('Name', 'Example');
subplot(121);plot(rand(3));
subplot(122);plot(rand(3));

<强>更新

如果你绝对需要两个轴,你可以试试这样的

figure('Name', 'plotyy');
h = plotyy([0 1 2 4], 0:4, [4 5], [2 1]);
linkaxes(h, 'off');
axis(h(1), [0 4 0 4]);
axis(h(2), [4 5 1 2]);

答案 2 :(得分:0)

如果您正在寻找的是plotyy但在另一个方向上的内容,请查看matlabcentral中的plotxx函数,该函数在x方向上执行类似的操作。

你可能需要调整它才能完成所需的一切,但它会给你一个很好的起点。

答案 3 :(得分:0)

您可以使用plotyy创建具有不同比例和限制的2 y轴。