首页 > 解决方案 > 创建螺旋矩阵 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

标签: matlab

解决方案


尝试这个:

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 作为值开始,一次循环一个循环,向外移动,再次向右、向上、向左、向下和向右遍历,每一步递增要分配的值,直到整个矩阵被填满。


推荐阅读