matlab问题急求

来源:百度知道 编辑:UC知道 时间:2024/04/29 13:44:05
编写一个M函数构造一个n×n螺旋方阵,要求函数自动生成螺旋方阵(而不是人为地初始化或逐个赋值),n作为函数的输入参数

function key = luoxuan(n)

key = ones(n)*-1;
dir=[0,1;1,0;-1,0;0,-1];
curdir=1;
num=n*n;
a=1;b=0;
for i=1:num
if(a+dir(curdir,1)==0 || a+dir(curdir,1)>n || b+dir(curdir,2)==0 || b+dir(curdir,2)>n...
|| key(a+dir(curdir,1),b+dir(curdir,2))~=-1)
if (curdir==1) curdir=2;
elseif(curdir==2) curdir=4;
elseif(curdir==3) curdir=1;
else curdir=3;
end;

end
a=a+dir(curdir,1);
b=b+dir(curdir,2);
key(a,b)=i;

end

return ;

给分吧