创建一个矩阵元素顺时针

3视图(30天)
亚历克西斯Pelet
亚历克西斯Pelet 2021年6月16日
你好,
我想创建一个(m, n)尺寸矩阵中元素的ID是顺时针/逆时针创建的。
第一个元素应该开始(1,1)。
例如,对于一个矩阵的大小(5、8)(即总共40元素)我们应该最后一个矩阵:
这应该是在Matlab的结果:
提前感谢您的回答!

接受的答案

Stephen23
Stephen23 2021年6月16日
编辑:Stephen23 2021年6月16日
更有效:
M = spiral2 (5, 8)
M = 5×8
1 21日22日20 19 18 17 16 2 23 36 35 34 33 32 15 3 24 37 38 39 40 31日14 4 25 26 27 28 29 30 13 5 6 7 8 9 10 11 12
1评论
亚历克西斯Pelet
亚历克西斯Pelet 2021年6月16日
它是完美的!我不会忘记提及你的名字在我创建的算法,非常感谢!

登录置评。

答案(1)

郑宇硕
郑宇硕 2021年6月16日
虽然可能不是最有效的方式可以填写边缘像我所做的:
clc;明确所有
x = 0 (5、8);%生成矩阵充满0
totN =元素个数(x);
指数= 1:totN;%值填入螺旋,这里1:总数进行审查
cnum = 1;%列号填写
元素个数(索引)~ = 0%,而仍有数字填写
印第安纳州= 1:4% 4 * 4边旋转之前下一个螺旋
zindex =找到(x (:, cnum) = = 0);%的领先的左手边看到哪些值是0
x (zindex cnum) =索引(1:元素个数(zindex));%填写哪里有0到第二1:# 0
索引(1:元素个数(zindex)) = [];%从列表中删除值使用
x = rot90 (x, 1);%旋转整个矩阵我们致力于持续优势
结束
disp (x)%显示矩阵
cnum = cnum + 1;%现在我们旋转4倍回到原来的方向和需要螺旋(下)上校
结束
1 21日22日20 19 18 17 16 2 0 0 0 0 0 0 15 3 0 0 0 0 0 0 13 14 4 0 0 0 0 0 0 5 6 7 8 9 10 11 12 1 21日22日20 19 18 17 16 2 23 36 35 34 33 32 15 3 24 0 0 0 0 31日14 4 25 26 27 28 29 30 13 5 6 7 8 9 10 11 12 1 21日22日20 19 18 17 16 2 23 36 35 34 33 32 15 3 24 37 38 39 40 31日14 4 25 26 27 28 29 30 13 5 6 7 8 9 10 11 12
1评论
亚历克西斯Pelet
亚历克西斯Pelet 2021年6月16日
即使你说它不是最有效的方式去做,你的代码的工作!谢谢你! !

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!