Matlab,2点之间的直线与n点之间

时间:2012-11-03 12:52:13

标签: function matlab line interpolation linear

我想创建一个需要2个数据点的函数:(x1, y1)(x2, y2)

然后我想返回一个函数f,它是两个点之间的直线。{/ p>

如果我接收2个数据点的x和y坐标,那么我可以这样做:

N

然后:

step_size = (x2 - x1) / N;
range = x1:step_size:x2;

这样就够了吗?

此外,我一直在网上搜索,无法找到任何可以执行此操作的功能。但如果有,请告知。

2 个答案:

答案 0 :(得分:2)

您正在寻找linspace。例如,定义

x1 = 0; y1 = 0; x2 = 4; y2 = 4; npoints=6;

然后

[linspace(x(1),y(1),npoints);linspace(x(2),y(2),npoints)]

评估为:

ans =

         0    0.8000    1.6000    2.4000    3.2000    4.0000
         0    0.8000    1.6000    2.4000    3.2000    4.0000

这可能不是你想要的,但我想你可以弄清楚其余的。

此外,如果您键入edit linspace.m,您可以看到如果要创建自己的版本,该函数是如何实现的,也许可以使用2元素向量。

答案 1 :(得分:1)

如果您想要一个返回另一个函数的函数来创建该行,请查看anonymous functions

function fun = makelinefun(x1,y1,x2,y2)
    fun  = @(N) [linspace(x1,x2,N) ; linspace(y1,y2,N)];
end

您用作:

f = makelinefun(0,0,6,9);
xy = f(4)

  xy =
      0     2     4     6
      0     3     6     9

multiple output arguments

function fun  = makelinefun(x1,y1,x2,y2)
    fun  = @(N) deal(linspace(x1,x2,N), linspace(y1,y2,N));
end

您用作:

f = makelinefun(0,0,6,9);
[x,y] = f(4)

  x =
      0     2     4     6
  y =
      0     3     6     9