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,

 Réponse acceptée

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

1 commentaire

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)];

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by