首页 > 解决方案 > 在 MATLAB 中创建一个元素数量有限的矩阵

问题描述

我想在 MATLAB 中创建一个 12*3 矩阵,每行只有 2 个非零元素。我应该如何生成代码以获取所有可能的条件。非零元素可以取 1 到 2 之间的任何整数。

标签: matlabmatrix

解决方案


如果您想要所有可能的组合而不重复 0 并且重复 1 和 2:

% Number of integer with repetition.
n = 2

% Generate all the possible combination of 1 and 2.
[x1,x2] = meshgrid(1:n,1:n);
M = [zeros(n^2,1),x1(:),x2(:)];

% We shift the 0 column n time.
M = cell2mat(arrayfun(@(x) circshift(M,x,2),0:n,'UniformOutput',0).');

结果:

M =

   0   1   1
   0   1   2
   0   2   1
   0   2   2
   1   0   1
   2   0   1
   1   0   2
   2   0   2
   1   1   0
   1   2   0
   2   1   0
   2   2   0

推荐阅读