在 matlab 中绘制两个具有不同轴和限制的信号
plot two signals with different axis and limits in matlab
让我们考虑一下我在具有不同限制的同一图表上一起绘制两个信号,因此我想要不同的轴
plot(a)
axis ([-2 10 -2 8])
hold 'on'
plot(b)
axis ([-1 4 -4 7])
hold 'off'
其中'a'和'b'是两个信号表达式。这里的问题是信号正在绘制但只有第二个轴在工作并且绘图 a 不限于第一个指定轴。第二个轴的原因显然是覆盖了第一个轴,但是知道如何用两个轴限制绘制两个信号吗?
您可以 select 使用逻辑运算符绘制您希望绘制的数据。
让我们考虑情节 a
.
的情况
将bs
的每一列分配给一个变量:
x1 = bs(:,1)
y1 = bs(:,2)
然后select只取满足指定条件的值:
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
图。
希望对您有所帮助!
您可能想看看 plotyy 以获得 2 个不同的 y 轴。
如果您的绘图没有任何共同点,也许您应该将它们绘制在 2 个不同的轴上,例如
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]);
如果您正在寻找的是 plotyy
的内容,但在另一个方向,请查看 matlabcentral 中的 plotxx 函数,该函数在 x 方向上执行类似的操作。
您可能需要对其进行调整以使其执行您需要的所有操作,但它会为您提供一个良好的起点。
您可以使用 plotyy
,这将创建 2 个具有不同比例和限制的 y 轴。
让我们考虑一下我在具有不同限制的同一图表上一起绘制两个信号,因此我想要不同的轴
plot(a)
axis ([-2 10 -2 8])
hold 'on'
plot(b)
axis ([-1 4 -4 7])
hold 'off'
其中'a'和'b'是两个信号表达式。这里的问题是信号正在绘制但只有第二个轴在工作并且绘图 a 不限于第一个指定轴。第二个轴的原因显然是覆盖了第一个轴,但是知道如何用两个轴限制绘制两个信号吗?
您可以 select 使用逻辑运算符绘制您希望绘制的数据。
让我们考虑情节 a
.
将bs
的每一列分配给一个变量:
x1 = bs(:,1)
y1 = bs(:,2)
然后select只取满足指定条件的值:
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
图。
希望对您有所帮助!
您可能想看看 plotyy 以获得 2 个不同的 y 轴。
如果您的绘图没有任何共同点,也许您应该将它们绘制在 2 个不同的轴上,例如
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]);
如果您正在寻找的是 plotyy
的内容,但在另一个方向,请查看 matlabcentral 中的 plotxx 函数,该函数在 x 方向上执行类似的操作。
您可能需要对其进行调整以使其执行您需要的所有操作,但它会为您提供一个良好的起点。
您可以使用 plotyy
,这将创建 2 个具有不同比例和限制的 y 轴。