我有一个矩阵,每个列代表一系列点,更具体一点:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
6 6 6 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2
5 4 3 2 6 4 3 2 6 5 3 2 6 5 4 2 6 5 4 3
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 4 3 3 3 4
3 3 4 4 3 3 4 4 3 3 5 5 4 4 5 5 4 4 5 5
4 5 5 5 4 6 6 6 5 6 6 6 5 6 6 6 5 6 6 6
1代表第一点,2代表第二点,依此类推。 如上所述,每列代表一组点(x和y坐标)的不同配置。
如果点数为:
(1,9)
(2,5)
(3,7)
(4,2)
(2,1)
(2,3)
然后一条可能的路径,根据第一列是:
(1,9)
(2,3)
(2,1)
(1,9)
(2,5)
(3,7)
(4,2)
有没有办法可以计算所有这些可能的配置并存储它们?
当我第一次接触到这个问题时,我不知道图论,这就是为什么到目前为止我没有使用它。
答案 0 :(得分:0)
我不理解你的序列矩阵的第四行背后的逻辑。它充满了1
,但它们似乎完全被你的例子忽略了。尊重你的例子,给出要点:
(1,9) (2,5) (3,7) (4,2) (2,1) (2,3)
和第一个列序列:
1 6 5 1 2 3 4
输出应为:
(1,9) (2,3) (2,1) (1,9) (2,5) (3,7) (4,2)
而不是:
(1,9) (2,3) (2,1) (2,5) (3,7) (4,2)
由于我不知道你的脚本应该如何工作以及我应该如何处理第四行,所以我实现了一个忽略该逻辑的代码,产生了对我来说最明显的结果:
seq = [
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
6 6 6 6 5 5 5 5 4 4 4 4 3 3 3 3 2 2 2 2
5 4 3 2 6 4 3 2 6 5 3 2 6 5 4 2 6 5 4 3
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 2 3 2 2 2 3 2 2 2 3 2 2 2 4 3 3 3 4
3 3 4 4 3 3 4 4 3 3 5 5 4 4 5 5 4 4 5 5
4 5 5 5 4 6 6 6 5 6 6 6 5 6 6 6 5 6 6 6
];
pts = {
[1 9]
[2 5]
[3 7]
[4 2]
[2 1]
[2 3]
};
paths = pts(seq);
然后,为了访问您可以使用的路径,例如:
for i = 1:size(paths,2)
disp(cell2mat(paths(:,i)))
end
或:
paths = cell2mat(paths);
for i = 1:2:(size(paths,2) / 2)
x = paths(:,i);
y = paths(:,i+1);
disp([x y]);
end