MATLAB中向量的n次置换

MATLAB中向量的n次置换,matlab,vector,permutation,Matlab,Vector,Permutation,假设我有一个整数向量,如下所示: A = [1 2 3] 我需要的是向量A的n次排列。正如我们现在看到的,n数字的向量有n排列,例如A的一些排列是: [1 2 3] [1 3 2] [2 1 3] [2 3 1] ... 是否有用于计算第n个置换的内置函数?如果没有,谁能给我一个有效的算法来计算它?如果A只是@Divakar所说的微不足道的序列1:N,任何建议都将受到高度赞赏 perms(1:N) 生成所需的排列 如果A是一个数组,其内容为泛型,长度为N,perms可用于获得允许排列的索引

假设我有一个整数向量,如下所示:

A = [1 2 3]
我需要的是向量A的n次排列。正如我们现在看到的,
n
数字的向量有
n排列,例如
A
的一些排列是:

[1 2 3]
[1 3 2]
[2 1 3]
[2 3 1]
...

是否有用于计算第n个置换的内置函数?如果没有,谁能给我一个有效的算法来计算它?如果
A
只是@Divakar所说的微不足道的序列
1:N
,任何建议都将受到高度赞赏

perms(1:N)
生成所需的排列

如果
A
是一个数组,其内容为泛型,长度为
N
perms
可用于获得允许排列的索引,即

A_permutations = A(perms(1:N)) 
例如:

给定

perms(v)适用于n!案例


适用于n^n或n^k情况

我从@Divakar评论中找到了我的答案(特别感谢@Divakar)
我需要的是:

% this my vector 1, 2, 3 , ..., N
A = 1 : N;
P = perms(A);

% nth permutation of A is nth row of P
nthPerm = P(n, :);

如果你喜欢用更少的代码行来做事情,你也可以做:

A=1:N;
nthPerm=getfield(perms(A),{n,A})
请注意,这仅在
A=1,2,3,…,N
时有效。对于
A
的不同值,必须将其更改为:

A=1:N;
nthPerm=getfield(perms(A),{n,1:length(A)})

perms([1,2,3])?对于N,perms(1:N),我想可能有用。@Divakar非常感谢,伙计,
perms()
这就是我需要的!
A=1:N;
nthPerm=getfield(perms(A),{n,1:length(A)})