请问怎么用matlab实现一个zigzag数组

请问怎么用matlab实现一个zigzag数组,第1张

你好!我设置了一个zigzag函数为你解答。

函数程序:

function a=zigzag(n,nstart,option)

a=zeros(n,n)

if(option==1)

    for i=1:n*n

        for j=1:n

            for k=1:n

                if(j+k<=n+1)

                    if(mod(j+k,2)==0)

                        s=j+k-2

                        a(j,k)=(1+s)*s/2+j

                    else

                        s=j+k-2

                        a(j,k)=(1+s)*s/2+k

                    end

                else

                    if(mod(j+k-n-1,2)==0)

                        m=j+k-n-1

                        s=((n-1)+(n-m))*m/2

                        a(j,k)=(1+n)*n/2+s-(n-j)

                    else

                        m=j+k-n-1

                        s=((n-1)+(n-m))*m/2

                        a(j,k)=(1+n)*n/2+s-(n-k)

                    end

                end

            end

        end

    end

else

    for i=1:n*n

        for j=1:n

            for k=1:n

                if(j+k<=n+1)

                    if(mod(j+k,2)==0)

                        s=j+k-2

                        a(j,k)=(1+s)*s/2+k

                    else

                        s=j+k-2

                        a(j,k)=(1+s)*s/2+j

                    end

                else

                    if(mod(j+k-n-1,2)~=0)

                        m=j+k-n-1

                        s=((n-1)+(n-m))*m/2

                        a(j,k)=(1+n)*n/2+s-(n-j)

                    else

                        m=j+k-n-1

                        s=((n-1)+(n-m))*m/2

                        a(j,k)=(1+n)*n/2+s-(n-k)

                    end

                end

            end

        end

    end

end

a=a+nstart-1

end

我的一个例子,主函数程序:

clcclear all

n=8%n乘n

nstart=0%左上角从0开始

option=0%option=0从行开始,option=1从列开始

a=zigzag(n,nstart,option)

disp(a)

结果:

     0     1     5     6    14    15    27    28

     2     4     7    13    16    26    29    36

     3     8    12    17    25    30    37    48

     9    11    18    24    31    38    47    49

    10    19    23    32    39    46    50    57

    20    22    33    40    45    51    56    58

    21    34    41    44    52    55    59    62

    35    42    43    53    54    60    61    63

>>

希望帮到你!

你好!我设置了一个zigzag函数,为你解答。

函数程序:

function a=zigzag(n,nstart,option)a=zeros(n,n)if(option==1) for i=1:n*n for j=1:n for k=1:n if(j+kclcclear alln=8%n乘nnstart=0%左上角从0开始option=0%option=0从行开始,option=1从列开始a=zigzag(n,nstart,option)disp(a)结果:

0 1 5 6 14 15 27 28 2 4 7 13 16 26 29 36 3 8 12 17 25 30 37 48 9 11 18 24 31 38 47 49 10 19 23 32 39 46 50 57 20 22 33 40 45 51 56 58 21 34 41 44 52 55 59 62 35 42 43 53 54 60 61 63>>希望帮到你!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11575667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存