要求是编写一个M函数,接受一个奇数,然后产生一个N*(2N-1)的矩阵,形式如下:
0 0 0 0 1 0 0 0 0
0 0 0 2 1 2 0 0 0
0 0 3 2 1 2 3 0 0
0 4 3 2 1 2 3 4 0
5 4 3 2 1 2 3 4 5
想了一下,有了个结果:
function A=pyramid(n)
if mod(n,2)==0
error('n should be an odd number!');
end
A=zeros(n,2*n-1);
for i=1:n
A(n-i+1:n,i)=n-i+1;
A(n-i+1:n,2*n-i)=n-i+1;
end
end
测试一下:
>> pyramid(7)
ans =
0 0 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 2 1 2 0 0 0 0 0
0 0 0 0 3 2 1 2 3 0 0 0 0
0 0 0 4 3 2 1 2 3 4 0 0 0
0 0 5 4 3 2 1 2 3 4 5 0 0
0 6 5 4 3 2 1 2 3 4 5 6 0
7 6 5 4 3 2 1 2 3 4 5 6 7
应该是没有什么问题了。这个练习中学到的技巧是避免了使用双重循环,而是使用的这种形式:A(n-i+1:n,i)=n-i+1,直接操作n-i+1到n行的数据。
评论