【问题标题】:Possible combinations - order is important可能的组合 - 顺序很重要
【发布时间】:2013-10-18 02:26:27
【问题描述】:

我想创建一个表,其中包含所有可能的组合,顺序 重要,使用 matlab 的 k 组中的 N 个数字。

我尝试了Combinations = combntns(set,subset)Combinations = perms(v)Combinations = combnk(v,k),但这些顺序并不重要。

一个例子:

nchoosek(1:5,3)

ans =

 1     2     3
 1     2     4
 1     2     5
 1     3     4
 1     3     5
 1     4     5
 2     3     4
 2     3     5
 2     4     5
 3     4     5

虽然它也应该包括

 1     3     2
 1     4     2
 1     5     2
 1     3     5
 1     5     3
...

可能的组合数由以下函数给出:

N!/(N-k)!

source: Mathisfun.com

有没有可能使用 matlab 函数来做到这一点?

【问题讨论】:

  • 您之前没有找到解决方案的原因是您正在寻找组合。实际上,如果顺序很重要,则称为排列。

标签: matlab


【解决方案1】:

试试这个节省内存的解决方案:

n = 5; k = 3;
nk = nchoosek(1:n,k);
p=zeros(0,k);
for i=1:size(nk,1),
    pi = perms(nk(i,:));
    p = unique([p; pi],'rows');
end

p应该包含您所描述的内容。对于此示例,至少为 size(p,1) == factorial(n)/factorial(n-k)60

【讨论】:

    猜你喜欢
    • 2016-06-19
    • 2019-08-23
    • 1970-01-01
    • 2021-12-12
    • 2012-06-14
    • 2011-12-31
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多