首页 > 解决方案 > 当行和列都为奇数或均为偶数时为 1 的矩阵

问题描述

我想创建一个矩阵,它具有:

我想得到与下面的代码相同的结果,但是在一行(命令窗口)表达式中:

 N=8;
 A = zeros(N);

 for row = 1:1:length(A)
     for column = 1:1:length(A)
        if(mod(row,2) == 1 && mod(column,2) == 1)

             A(row,column*(mod(column,2) == 1)) = 1;

         elseif(mod(row,2)== 0 && mod(column,2) == 0 )

             A(row,column*(mod(column,2) == 0)) = 1;

        end
     end
  end
 disp(A)

这是预期的结果:

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

标签: matlabmatrix

解决方案


一种简单的方法是使用加法的隐式扩展,注意到

odd+odd = even+even = 0

所以这是你的答案:

A = 1 - mod( (1:N) + (1:N).', 2 );

您也可以使用 执行此操作toeplitz,如本MATLAB Answers Post所示

对于行数 = 列数 = 的方阵N

A = toeplitz(mod(1:N,2));

如果行数 ( M) 不等于列数 ( N) 则

A = toeplitz(mod(1:M,2),mod(1:N,2))

FWIW,你在问这个问题的一个具体案例:

如何尽快生成自定义的棋盘矩阵?


推荐阅读