【发布时间】:2020-11-07 20:58:09
【问题描述】:
我一直在尝试制作一个二维数组,其中心的数字最大,并且它周围的数字像这样递减:
[0 0 0 0 0 0 0;
0 1 1 1 1 1 0;
0 1 2 2 2 1 0;
0 1 2 3 2 1 0;
0 1 2 2 2 1 0;
0 1 1 1 1 1 0;
0 0 0 0 0 0 0]
有什么帮助吗?
【问题讨论】:
我一直在尝试制作一个二维数组,其中心的数字最大,并且它周围的数字像这样递减:
[0 0 0 0 0 0 0;
0 1 1 1 1 1 0;
0 1 2 2 2 1 0;
0 1 2 3 2 1 0;
0 1 2 2 2 1 0;
0 1 1 1 1 1 0;
0 0 0 0 0 0 0]
有什么帮助吗?
【问题讨论】:
这很容易使用implicit expansion:
M = 7; % desired size. Assumed to be odd
t = [0:(M-1)/2 (M-3)/2:-1:0].';
result = min(t, t.');
或者,您可以使用带有'minij' 选项的gallery 函数来产生结果的一个象限,然后对称地扩展:
M = 7; % desired size. Assumed to be odd
result = gallery('minij',(M+1)/2)-1;
result = [result result(:,end-1:-1:1)];
result = [result; result(end-1:-1:1,:)];
另一种方法,使用图像处理工具箱中的padarray:
result = 0;
for k = 1:(M-1)/2;
result = padarray(result+1, [1 1]);
end
【讨论】: