我想创建一个需要 2 个数据点的函数:(x1, y1)
和 (x2, y2)
。
然后我想返回一个函数f
,它是中间有N
个点的点之间的直线。
如果我获取 2 个数据点的 x 和 y 坐标,那么我可以这样做:
step_size = (x2 - x1) / N;
range = x1:step_size:x2;
然后:
f = ((y2 - y1)/(x2 - x1)) * range + ((y1/x1) * ((x2 - x1)/(y2 - y1)));
这样就够了吗?
此外,我一直在网上搜索,但找不到任何现有的函数可以做到这一点。但如果有的话请指教。
最佳答案
您正在寻找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 元素向量)。
关于Matlab,2点之间有n点的直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13209373/