matlab - 创建螺旋矩阵 Matlab
问题描述
loops
任何人都可以仅使用和if else
条件帮助在matlab中创建螺旋矩阵。
例如n=5
,螺旋矩阵为:
17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
解决方案
尝试这个:
nn = input('');
n = floor(1+(nn)/2);
a = zeros(nn,nn);
i=n;j=n;m=1;br=true;
if rem(nn,2)==0
j=n-1;
nn=nn+2;
end
for p=1:2:nn
k=0;
while k<p-2
k=k+1;
a(i,j)=m;
i=i-1;
m=m+1;
end
k=0;
while k<p-1
k=k+1;
a(i,j)=m;
j=j-1;
m=m+1;
end
k=0;
while k<p-1
if j<1
br = false;
break
end
k=k+1;
a(i,j)=m;
i=i+1;
m=m+1;
end
if ~br
break
end
k=0;
while k<p
k=k+1;
a(i,j)=m;
j=j+1;
m=m+1;
end
end
disp(a)
这是一个示例运行:
Enter the number:
5
17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
另一个,这次使用偶数:
Enter the number:
6
36 35 34 33 32 31
17 16 15 14 13 30
18 5 4 3 12 29
19 6 1 2 11 28
20 7 8 9 10 27
21 22 23 24 25 26
解释:在奇数输入的情况下,它从中央单元格开始,在偶数输入的情况下,它从左下角的中央单元格开始。然后,它以 1 作为值开始,一次循环一个循环,向外移动,再次向右、向上、向左、向下和向右遍历,每一步递增要分配的值,直到整个矩阵被填满。
推荐阅读
- acumatica - 联系 PXSelector 未正确显示 DisplayName
- javascript - 如何在使用 Javascript 提交之前调整 Django Imagefield 中的图像大小
- android - Nativescript Vue Actionbar 复制 Android
- php - Slim 3.11 可调用解析器类型错误
- python - 如何计算每个像素值的平均值?
- python - 数独验证阻止任何移动尝试
- sql - 具有相似名称的表的多对多关系表名称
- redis - 在redis中存储30M条记录
- objective-c - 在 macOS 的 Cocoa 应用程序中,我使用 NSFileWrapper 将包保存到磁盘。如何让查找器显示我的捆绑包的正确图标?
- python - 如何从 scipy 稀疏块矩阵中取回块?