非线性辅助x轴matlab

时间:2015-08-05 15:46:31

标签: matlab plot

我正在尝试绘制y vs x图。 x是时间向量。但是,在不同的(不规则的时间),会有第二个向量k(引擎小时)发生变化。

例如:

t = [1:1:10];
k = [1 1 2 2 2 2 2 5 8 8];

tk的长度相同。

然而,在我的y vs t图上,我想要第二个x轴(由t向量驱动),显示k的变化。例如,在t = 1k = 1,...然后我们在t = 3k = 1看到了新值。

如何创建这样的第二轴?

2 个答案:

答案 0 :(得分:0)

我不清楚,但试试这个

nk = [0,diff(k)];

答案 1 :(得分:0)

这个问题对我来说有点难以理解......但我会尝试一下。

您希望在同一图中绘制2个图表。

  • y vs t
  • "第二个x轴(由t向量驱动)显示k" 的变化,因此 k vs t

听起来你想要一个在单个x轴上有2个y轴的图。您可以使用plotyy功能,例如:

y = sin(0:2*pi/9:2*pi);
t = [1:10];
k = [1 1 2 2 2 2 2 5 8 8];

figure(1);

[ax1,h1,h2] = plotyy(t,y,t,k);
xlabel('time');
ylabel(ax1(1),'y');
ylabel(ax1(2),'engine hours');

Example of code output

这就是你想要的吗?或者你的意思是你试图在 y vs t 图上创建一个额外的x轴,其中t值被相应的k值替换(即一条线穿过你的图表对应到2个不同的x轴和y轴)?

要做到这一点,你可以尝试在顶部用x轴制作一个额外的图,然后用k手动标记x-ticks,然后创建一个新轴并绘制 y vs t 图表顶部。以下代码给出了一个示例:

y = sin(0:2*pi/9:2*pi);
t = [1:10];
k = [1 1 2 2 2 2 2 5 8 8];

% Clear old figure
try
    close 1;
end
figure(1);
%% Create t vs k plot (upper x axis)
axes();
plot(t,y);
set(gca,'xaxislocation','top','yticklabel',[],'xticklabel',k);
xlabel('Engine Hours');
hold on;
%% Create t vs y plot
axes()
plot(t,y);
xlabel('time');
ylabel('y');
set(gca,'xaxislocation','bottom');

结果如下: enter image description here