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,

 Accepted Answer

You can use nchoosek to get the permutations, then loop to call your function for each permutation.

1 Comment

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

Sign in to comment.

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!