matlab - 如何创建坐标矩阵以及如何计算距离 b/w 坐标
问题描述
我想为任何输入创建一个如下所示的矩阵,并假设输入是"4"
.
a1 = (-10.0) (0,0) (10,0) (20,0)
(-10,5) (0,5) (10,5) (20,5)
(-10,10) (0,10) (10,10) (20,10)
(-10,15) (0,15) (10,15) (20,15)
但我不知道该怎么做,而且我想计算单个元素的距离,比如 (0,0) 与其余元素的距离?
编辑:
原点的位置(0,0)
可以这样改变:
a2= (-20.0) (-10,0) (0,0) (10,0)
(-20,5) (-10,5) (0,5) (10,5)
(-20,10) (-10,10) (0,10) (10,10)
(-20,15) (-10,15) (0,15) (10,15)
下一个矩阵将是
a3= (-30.0) (-20,0) (10,0) (0,0)
(-30,5) (-20,5) (10,5) (0,5)
(-30,10) (-20,10) (10,10) (0,10)
(-30,15) (-20,15) (10,15) (0,15)
和
a4= (0,-5) (10,-5) (20,-5) (30,-5)
(0,0) (10,0) (20,0) (30,0)
(0,5) (10,5) (20,5) (30,5)
(0,10) (10,10) (20,10) (30,10)
接着
a5= (-10,-5) (0,-5) (10,-5) (20,-5)
(-10,0) (0,0) (10,0) (20,0)
(-10,5) (0,5) (10,5) (20,5)
(-10,10) (0,10) (10,10) (20,10)
和 a6、a7 等等.....我将不得不通过改变元素的位置来对所有元素执行相同的(0,0)
操作,如上所述。
解决方案
要根据大小n
、原点的 x 和 y 位置(0,0)
以及 x 和 y 步长生成数组,您可以使用如下函数:
function a = generate_array(n,x0_pos,y0_pos,x_step,y_step)
a1 = linspace(0 - (x0_pos - 1) * x_step, (n - x0_pos) * x_step, n);
a2 = linspace(0 - (y0_pos - 1) * y_step, (n - y0_pos) * y_step, n);
for i = 1:n
for j= 1:n
a{i,j} = [a1(i), a2(j)];
end
end
end
请注意,由于您使用的是较旧的 Matlab 版本,因此该函数需要位于名为generate_array.m
.
现在您需要一个函数来计算从任意点到其中一个单元阵列中的所有点的欧几里得距离。例如,此函数可能如下所示:
function dist = calc_distance(arr,x,y)
n = size(arr,1);
for i = 1:n
for j= 1:n
dist{i,j} = norm(arr{i,j} - [x, y]);
end
end
end
再次确保将此函数保存在名为calc_distance.m
.
在您的主脚本中,您可以使用这样的两个函数来生成示例中的数组并计算距离:
n = 4;
x_step = 10;
y_step = 5;
x_point = -10;
y_point = 5;
for j = 1:n
y0_pos = j;
for i = 1:n
x0_pos = i;
a_parent{i,j} = generate_array(n, x0_pos, y0_pos, x_step, y_step);
dist_parent{i,j} = calc_distance(a_parent{i,j},x_point,y_point);
end
end
这将构造一个 4x4 元胞数组a_parent
,其中每个元胞包含另一个 4x4 元胞数组。在(1,1)
单元格中将是原点在位置的坐标单元格数组(1,1)
,在(1,2)
单元格中将是原点所在的坐标单元格数组,(1,2)
依此类推。
此外,它将生成一个名为的单元阵列dist_parent
,它再次包含 4x4 单元阵列,其中包含 4x4 不同单元阵列到您各自点的所有距离。作为一个例子,我计算了到该点的所有距离(5,5)
。
推荐阅读
- django - Django2.2 上下文管理器 | {{template_tags}} | 可变极限?
- jenkins - 如何通过 bitbucket-hook 将面包屑信息传递给詹金斯?
- javascript - 多个这个,使用第一个
- flutter - Flutter 嵌套路由
- mysql - 通过迁移添加外键时,哪些表被锁定?
- r - 如何检查变量 A 影响变量 B?
- react-native - 弹出Expo,React Native,找不到libreactnativejni.so
- java - BufferedReader 的 readLine 方法中缺少行
- node.js - vue-cli开发模式如何与服务端api结合?
- javascript - JavaScript:使用具有特定属性的方法创建返回对象的工厂函数