MATLAB: How to apply a function to each column pair of a matrix

bsxfuncolumn pairs

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 5×5 matrix with a diagonal of ones like correlation matrix.
Thanks,

Best Answer

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