【发布时间】:2011-10-20 11:54:11
【问题描述】:
我对编程很陌生,所以在我完成这个练习时,我正在寻找一些专家来指导我朝着正确的方向前进。
我已经使用 horzcat 和 vertcat 手动执行此操作,但我想问是否有人知道更简单的方法。
矩阵 1 为 18x18,从 1 开始水平索引。
矩阵 1 位于中心,代表一个离散空间。矩阵 2、3、4、5、6、7、8、9 是矩阵 1 的复制品,也代表离散空间,位于右下、右下、下、左下、左、左上、上和右上。
矩阵 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 也是矩阵 1 的复制品,并围绕矩阵 2 到 9。构建在一起形成如下模式。每个矩阵本身就是一个离散单元。
如果您定义了所需矩阵的数量,那么在这种情况下,假设“49”或“距离矩阵 1 的 4 步”(一个人可以从对角线上的 1、9、25、49 或 1、8 , 23,46 在一条直线上),我该如何构建这种模式的矩阵?
43 44 45 46 47 48 49
42 21 22 23 24 25 26
41 20 7 8 9 10 27
40 19 6 1 2 11 28
39 18 5 4 3 12 29
38 17 16 15 14 13 30
37 36 35 34 33 32 31
如果我用图表来演示这一点,我希望我能更好地表达我的问题。
所以第一个环是这样的:
7 8 9
6 1 2
5 4 3
第二个环是这样的:
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
第三个环是
43 44 45 46 47 48 49
42 21 22 23 24 25 26
41 20 7 8 9 10 27
40 19 6 1 2 11 28
39 18 5 4 3 12 29
38 17 16 15 14 13 30
37 36 35 34 33 32 31
等等。我希望能够无限地延续这种模式。
在 Matlab 中最好的方法是什么?
对于我的表述不够清晰,我需要更好地表达我的问题,我深表歉意。您所有的 cmets 都非常有用,可以向我展示如何编写正确的问题。
非常感谢你们的帮助。刚加入这个论坛,因为这里的支持非常好。
【问题讨论】:
-
...不清楚你想要什么。 “添加空格”? “另外 8 个矩阵”,你的意思是“8 个矩阵元素”吗?什么双打?你说的层是什么意思? ...
-
抱歉,我觉得这很难解释。每个矩阵代表一个空间。我想在同心环中添加一个矩阵的复制品。所以,矩阵 1 是 18x18。矩阵 2、3、4、5、6、7、8、9 是矩阵 1 的复制品,但位于右下、右下、下、左下、左、左上、上、右上。加倍是如果 1 在中心,则 1 周围有 8 个,然后 8 周围有 16 个,依此类推。
-
也许您可以使用问题下方的“编辑”链接来改进您的文本,并在评论中加入您所说的内容?
-
“加倍”在这里有点奇怪,因为你拥有的子矩阵的数量增加了 1->9->25->49->81,所以你添加的数字是 8,16,24, 32...所以如果你理解正确,没有什么是加倍的
-
对不起,我解释得不好。翻倍只是 8 到 16。模式确实是 1 8 16 24 32。我添加了一个更好的解释。谢谢你们的cmets!他们很有帮助!
标签: matlab matrix repeat spiral