我本质上是想弄清楚如何为 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/