matlab中全排列的问题

比如1、2、3、4中选取3个数的排列有64中结果;1、2、3、4、5中选取4个数有625种结果,选取3个数有125种结果。该用哪个函数?

perms

产生所有可能的排列

语法

P = perms(v)

P = perms(v),这里v是一个长度为n的行向量,此函数产生v中这n个元素的全排列矩阵,每行为一个排列。矩阵P包含有n!行和n列。

举例

命令perms(2:2:6) 返回数字2、4和6的所有排列:
6 4 2
6 2 4
4 6 2
4 2 6
2 4 6
2 6 4

局限

此函数值只能适用于n < 15的情况下。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-31
perms
产生所有可能的排列
语法
P
=
perms(v)
P
=
perms(v),这里v是一个长度为n的行向量,此函数产生v中这n个元素的全排列矩阵,每行为一个排列。矩阵P包含有n!
第2个回答  推荐于2018-03-21
clear;clc
n=4;
m=3;
X=nchoosek(1:n,m);
Y=cell2mat(arrayfun(@(k)perms(X(k,:)),1:nchoosek(n,m),'uniformoutput',0)')
Z=nchoosek(n,m)*prod(1:m)

本回答被网友采纳
相似回答