如何使图形与另一个图形的顶部相切?

时间:2015-01-14 21:26:24

标签: matlab graph

我有一个图表:速度是汽车转速的函数。实际图表由四个子图组成(汽车的4个齿轮各一个)。我将这些子图与for循环和一些if语句结合在一起。结果图如下所示。

我需要添加一个与图形的所有顶部相切的图形,如红线。最终结果如下:

graph

(现在仍然没有红线,显然......)

这些是切线与图形接触的坐标:(17,5130.36),(28,3177.98),(39,2239.37),(51,1714.72)。

1 个答案:

答案 0 :(得分:0)

因为你已经知道了切点,

x = [17 28 39 51];
y = [5130.36 3117.98 2239.37 1714.72];
plot(x, y, 'b.')

解决方案是一个简单的插值

xs = linspace(min(x), max(x), 100);
ys = spline(x, y, xs);
hold on
plot(xs, ys, 'r')

结果:

我在这里使用了Matlab的标准三次样条插值;根据您的数据属性,其他interpolation functions可能会提供更好的结果。特别是,如果您不仅知道切点的位置而且还知道切线斜率,则可以使用该信息对分段多项式插值施加约束。