让我们考虑我在同一个图表上绘制两个信号,这些信号有不同的限制因此我想要不同的轴
plot(a)
axis ([-2 10 -2 8])
hold 'on'
plot(b)
axis ([-1 4 -4 7])
hold 'off'
其中' a'和' b'是两个信号表达。这里的问题是信号正在获得绘图,但只有第二个轴正在工作,而绘图a并不仅限于第一个指定的轴。原因是第二轴显然会覆盖第一个轴,但是任何想法如何用两个轴限制绘制两个信号?
答案 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轴。