Определенная векторная операция без петель - PullRequest
1 голос
/ 24 марта 2020

Учитывая вектор x1, x2, ..., xN, мне нужно создать вектор (x_i + x_j) для i = 1,...,N, j = i+1,...,N.

Например, для x1, x2, x3, x4:

x1+x2, x1+x3, x1+x4, x2+x3, x2+x4, x3+x4

Как это сделать это без петель, чтобы получить хорошую производительность?

1 Ответ

3 голосов
/ 24 марта 2020

C = combnk (v, k) возвращает матрицу, содержащую все возможные комбинации элементов вектора v, взятых k за один раз.

Поэтому, если вы позвоните

combnk(x,2)

, вы получите

 x3     x4
 x2     x4
 x2     x3
 x1     x4
 x1     x3
 x1     x2

Если вы полагаетесь на ордер, который теперь инвертирован, используйте flipud , затем позвоните sum

sum(flipud(combnk(x,2)),2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...