MATLAB矢量化创建矩阵

时间:2013-04-09 16:00:37

标签: matlab vectorization

我想创建一个像

这样的矩阵
[1 2;
 1 3;
 1 4;
 1 5;
 2 3;
 2 4;
 2 5;
 3 4;
 3 5;
 4 5 ]

当大小为5.我的目标是大小超过100.如何在MATLAB中使用vertorization创建这样的矩阵?

2 个答案:

答案 0 :(得分:7)

您正在寻找二项式系数,因此请使用内置的nchoosek命令。例如,您的问题中的矩阵可以通过以下方式生成:

A = nchoosek(1:5, 2)

这导致:

A =
     1     2
     1     3
     1     4
     1     5
     2     3
     2     4
     2     5
     3     4
     3     5
     4     5

答案 1 :(得分:2)

一个解决方案:

[r,c]=find(tril(ones(N),-1));
result = [c,r];

作为奖励,您可以使用

获取此类矩阵中的行数
nrows = nchoosek(N,2);