我想创建一个需要2个数据点的函数:(x1, y1)
和(x2, y2)
。
然后我想返回一个函数f
,它是两个点之间的直线。{/ p>
如果我接收2个数据点的x和y坐标,那么我可以这样做:
N
然后:
step_size = (x2 - x1) / N;
range = x1:step_size:x2;
这样就够了吗?
此外,我一直在网上搜索,无法找到任何可以执行此操作的功能。但如果有,请告知。
答案 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
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