Matrix symmetric by 2x2 blocks

Hello everyone,
I need to extract from 2n by 2n matrix the symetric and skew-symetric 2x2 blocks.
For example, for given A:
A=[
5,-1, 2,-3;
1,5, 4,2;
-2,3, 5,-1;
4,-2, 1,5;
]
I want to get:
A_symetric= [
5,-1, 0,0;
1,5, 4,0;
0,0, 5,-1;
4,0, 1,5;
]
And
A_skew_symetric= [
0,0, 2,3;
0,0, 0,2;
-2,-3, 0,0;
0,-2, 0,0;
]

2 Comments

function [A_sym,A_anti] = sym_by_blocks(A)
syms w t
n=length(A);
A_sym=sym(zeros(length(A)));
A_anti=sym(zeros(length(A)));
for row=1:2:n
for col=1:2:n
if row==col
A_sym(row:row+1,col:col+1)=A(row:row+1,col:col+1);
else
A_sym(row:row+1,col:col+1)=0.5*(A(row:row+1,col:col+1)+A(col:col+1,row:row+1));
A_anti(row:row+1,col:col+1)=0.5*(A(row:row+1,col:col+1)-A(col:col+1,row:row+1));
end
end
end
end
OK, and the question is.................
Or is that your answer?

Sign in to comment.

Answers (0)

Categories

Find more on Simulink in Help Center and File Exchange

Tags

Asked:

on 9 Jan 2021

Edited:

on 9 Jan 2021

Community Treasure Hunt

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

Start Hunting!