How can I apply a function to each column pair of a matrix?

Hi, I have a function that uses two vectors as inputs and gives an output as scalar. I want to apply this function to each pair of the matrix columns. For example, think about I have a matrix "x" with 5 columns. I want to apply my function to pairs of x(:,1)-x(:,2) + x(:,1)-x(:,3) + x(:,1)-x(:,4) + x(:,1)-x(:,5) + x(:,2)-x(:,3) + x(:,2)-x(:,4) + x(:,2)-x(:,5) + x(:,3)-x(:,4) + x(:,3)-x(:,5) + x(:,4)-x(:,5) +
And also I want store the resulting scalars in a symmetric 5x5 matrix with a diagonal of ones like correlation matrix.
Thanks,

 Respuesta aceptada

Chad Greene
Chad Greene el 27 de Oct. de 2015
You can use nchoosek to get the permutations, then loop to call your function for each permutation.

1 comentario

For example,
n = nchoosek(1:5,2)
gives you all the unique pairs from 1 to 5. To complete the list for your project you'd need to follow that with
n = [n;fliplr(n)];

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 27 de Oct. de 2015

Comentada:

el 27 de Oct. de 2015

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by