我只想在matlab中通过以下几点画一条线。目前该线仅延伸至各点。我需要扩展和截取x轴。代码在
之下A = [209.45 198.066 162.759];
B = [1.805 1.637 1.115];
plot(A,B,'*');
axis([0 210 0 2]);
hold on
line(A,B)
hold off
答案 0 :(得分:2)
如果您想使用相应的y==0
积分来增加积分,建议您使用interp1
获取x
- 拦截:
A = [209.45 198.066 162.759];
B = [1.805 1.637 1.115];
x0 = interp1(B,A,0,'linear','extrap'); %extrapolate (y,x) at y==0 to get x0
[newA, inds] = sort([x0 A]); %insert x0 where it belongs
newB = [0 B];
newB = newB(inds); %keep the same order with B
plot(A,B,'b*',newA,newB,'b-');
这将使用interp1
执行线性插值,并打开外推。通过插入(B,A)
对,我们实际上会反转你的线性函数。
接下来,我们将(x0,0)
点添加到数据中,但由于matlab按点的顺序绘制线条,因此我们必须根据sort
组件x
向量。然后使用排序顺序在扩展的B
向量中保持相同的顺序。
最后画出了这条线。我使用plot
和linespec
'-'
来绘制与点本身相同的命令行。如果您没有注意到(x0,0)
点也被指示,您可以使用plot(newA,newB,'*-');
将标记和线条一起绘制,以确保颜色匹配(在上面的代码中我手动设置)两个地块都有相同的蓝色。)