【问题标题】:Create pyramid checkerboard matrix MATLAB创建金字塔棋盘矩阵MATLAB
【发布时间】:2014-06-25 04:02:52
【问题描述】:

我想在白色背景上创建一个金字塔形棋盘。它需要是一个大矩阵(1186,686),否则我会手动完成。我所追求的简化版本如下:

0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 1 0 1 0 0 0
0 0 1 0 1 0 1 0 0
0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1

【问题讨论】:

  • 偶数列的预期行为是什么?例如 6x6?
  • 我没有关注你的问题
  • 您能否向我们展示一些列数为810 或任何偶数的金字塔的预期输出?
  • 啊。现在我明白了。那时金字塔就会偏离中心。
  • 向右还是向左?在您的问题中添加预期输出将有助于我们理解我的想法。

标签: matlab matrix


【解决方案1】:

这是一个尝试,它是半向量化的,因为我无法弄清楚如何在没有 for 循环的情况下做到这一点。

function B = board(rows, cols, centerright)
    c2 = cols/2;
    mid = floor(c2);
    if c2 ~= int32(c2) || centerright
        mid = mid + 1;
    end

    B = zeros(rows,cols);
    for row = 2:min([rows, mid+1, cols-mid+2])
        offset = row-2;
        newr = zeros(1, cols);
        newr([mid-offset:2:mid+offset]) = 1;
        B(row,:) = newr;
    end
end

演示:

>> board(6,9)
ans =
     0     0     0     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0
     0     0     0     1     0     1     0     0     0
     0     0     1     0     1     0     1     0     0
     0     1     0     1     0     1     0     1     0
     1     0     1     0     1     0     1     0     1
>> board(6,10,0)
ans =
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     1     0     0     0     0     0
     0     0     0     1     0     1     0     0     0     0
     0     0     1     0     1     0     1     0     0     0
     0     1     0     1     0     1     0     1     0     0
     1     0     1     0     1     0     1     0     1     0
>> board(6,10,1)
ans =
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0
     0     0     0     0     1     0     1     0     0     0
     0     0     0     1     0     1     0     1     0     0
     0     0     1     0     1     0     1     0     1     0
     0     1     0     1     0     1     0     1     0     1

【讨论】:

  • 正是我需要的谢谢。但是有一个问题:如果宽度不足以完成金字塔,则会出错。有没有办法告诉它一旦函数的宽度=矩阵的宽度就停止?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
相关资源
最近更新 更多