matlab - 在matlab中生成所有可能的列向量

标签 matlab permutation

我本质上是想弄清楚如何为 M 个对象的不同配置的基本向量生成 N 个不同状态的代码(例如,如果我在 2 个 child 之间吃 2 份零食,我可以有 (2,0) (0 ,2) 或 (1,1),糟糕的例子,但这就是想法)

我正在努力弄清楚如何在不进入许多不同循环的情况下执行此操作(我希望这是自动的)。这个想法是创建一个矩阵,其中每行都是长度为 M 的向量。我将从 vec(1) = N 开始,然后是 if 循环,其中 if sum(vec) == N, Matrix(1,:)=vec ;然后我可以采用 vec(1)=N-i 并执行相同的操作。

我唯一的问题是我不知道如何使用 if 并忘记它,所以如果我在 5 个位置可能有 2 个对象,我将如何执行此操作以获得 (1 0 0 0 1)。

我不知道如何做到这一点。

最佳答案

您可以使用递归函数:

function out = combos(M,N)

if N == 1
  out = M;
else
  out = [];
  for i = 0:M
    subout = combos(M-i,N-1);
    subout(:,end+1) = i;
    out = [out;subout];
  end
end

关于matlab - 在matlab中生成所有可能的列向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44208206/

相关文章:

algorithm - "K-transformed"排列

javascript - 使用递归的重复排列 - JavaScript

python - 将 MATLAB 函数移植到 Scilab。我如何使用符号?

c++ - 在 C++ 中创建二维数组并在 MATLAB 中使用它

python - 排列,但有一些数字按顺序排列

Python - 加快列表排列的生成(以及检查 Dict 中是否排列的过程)

c - Matlab 的单步 VC++ 2010 调试器

matlab - 使用更多的点来定义 imroi 对象

matlab - matlab运算符 "|"是什么意思?

c++ - Prev_permutation 与 Next_permutation 难度