matlab中 nchoosek()排列组合函数
语法:
C = nchoosek(n,k)
C = nchoosek(v,k)
描述:
C = nchoosek(n,k) 其中n和k是非负整数, 返回 n!/((n–k)! k!).
这是从n种情况中一次取出k种的组合的数量。
C = nchoosek(v,k), 其中v是一个长度为n的行向量,创建一个矩阵,该矩阵的行由每次从v中的n个元素取出k个取值的所有可能组合构成。
矩阵 C 包含 n!/((n–k)! k!) 行和 k 列.
输入 n, k, 和 v 支持类型:float double 和 float single.
例子:
假如有一个矩阵A:
1 2 3
4 5 6
7 8 9
我想遍历其中所有的两列组合,即下面的3组:
1 2
4 5
7 8
1 3
4 6
7 9
2 3
5 6
8 9
A=reshape(1:9,3,3)';
ind=nchoosek(1:3,2);
B=cell(1,size(ind,1));
for i=1:size(ind,1);
B{i}=A(:,ind(i,:));
end
矩阵A=s:d:f 和A(k,:)
matlab中A=s:d:f,s表示起始值,d表示增量,f表示终点值,1:2:5即为1,1+2=