【发布时间】:2019-10-17 20:53:53
【问题描述】:
我有一个顶点列表,其中每一行对应一个 (x, y) 坐标。
例如,以下包括顶点 (0, 0)、(1, 0) 和 (0, 1)
V = [0 0;
1 0;
0 1];
我还有一个边列表,其中第一列指定起始顶点的行,第二列指定结束顶点的行。
例如,以下包括边 (0, 0) 到 (1, 0) 和 (0, 0) 到 (0, 1)
E = [1 2; % V(1) -> V(2) = (0, 0) -> (1, 0)
1 3] % V(1) -> V(3) = (0, 0) -> (0, 1)
我需要从这两个列表中生成一个边缘列表及其实际坐标。也就是说,从V和E,我需要
edge1 = [0 0]; % = E(1, 1) = V(1)
edge2 = [0 0]; % = E(2, 1) = V(1)
edge3 = [1 0]; % = E(1, 2) = V(2)
edge4 = [0 1]; % = E(2, 2) = V(3)
我知道如何使用 for 循环执行此操作,但我的主管说使用函数 find(x) 有一个更优化的解决方案,它返回数组中的非零索引。我看不出如何使用find 来做到这一点。有没有一种方法可以在不使用 for 循环但使用 find 函数的情况下完成此操作?
【问题讨论】:
-
edge1不只是实际第一条边的第一个坐标,等等?这是故意的吗?
标签: matlab optimization