Average matrix values across diagonal

12 views (last 30 days)
Johanna Popp
Johanna Popp on 28 Jun 2021
Commented: Johanna Popp on 28 Jun 2021
Hi all :)
I have an asymmetric structural connectivity matrix size 376 by 376 where the elements Cij and Cji are different. What I am trying to do is to average the values contained in Cij and Cji so that I have a symmetric matrix. Sp basically I am trying to average values "across the diagonal" of my matrix.
Any help would be appreciated!
Thanks :)

Answers (1)

Asmit Singh
Asmit Singh on 28 Jun 2021
Hey, I think this is what you require. This basically takes a mean over the diagonally opposite numbers, to create a symmetrical matrix.
% replace with the needed matrix
matrix = [1,2,3 ; 4,5,6 ; 7,8,9];
display(matrix)
% row/column size
siz = size(matrix);
n = siz(1);
for i= 1:n
for j = i:n
matrix(i,j) = (matrix(i,j)+matrix(j,i))/2;
matrix(j,i) = matrix(i,j);
end
end
display(matrix);

Tags

Community Treasure Hunt

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

Start Hunting!