【问题标题】:Matlab array that decreases from the center从中心减小的Matlab数组
【发布时间】: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]

有什么帮助吗?

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    这很容易使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      相关资源
      最近更新 更多