# Calculate the sum of all the relations between a matrix components

3 views (last 30 days)

Show older comments

Hi, does anyone know how I can calculate the sum of all the relations between a matrix components? For example by having a 3*3 matrix like:

a=[a11,a12,a13;a21,a22,a23;a31,a32,a33];

I want to calculate a relation between all the components such that:

r11=((a11-a12)/(a11+a12) + (a11-a13)/(a11+a13) + (a11-a21)/(a11+a12) + (a11-a22)/(a11+a22) + (a11-a23)/(a11+a23)+...

(a11-a31)/(a11+a31) + (a11-a32)/(a11+a32) + (a11-a33)/(a11+a33))/n;

n=8; %Number of matrix components-1 in this case

I want to do this for every components of the matrix (each component has interaction with every other components) so that I have:

r12,r13,r21,r22,r23,r31,r32,r33

I used for loop but it takes a long time and long code to calculate the results (my real matrix is 101*101). Is there any simple way to do that? Thank you.

##### 1 Comment

John D'Errico
on 26 Jun 2021

### Accepted Answer

DGM
on 27 Jun 2021

This could be done various ways. You could do this with loops if it's easier to understand. I'll just do this:

% example inputs

A = [1 2 3; 4 5 6; 7 8 9];

n = numel(A)-1;

F = @(x) sum((x-A)./(x+A),'all')/n; % define a function to calculate each sum

R = arrayfun(F,A) % calculate all of them

Using numbered variable names is a great way to cause problems for yourself. If you can embed indexing information within the variable name, then you can just use an array and index into it like normal.

### More Answers (0)

### See Also

### Community Treasure Hunt

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

Start Hunting!