MATLAB: Mirror pattern of the leading diagonal about the middle element of the matrix

matrix

Hi All,
I am interested to create the following matrix but unable to think about the logic to create it.
for example : for n = 5 ; the elememts of leading diagonal are 2 1 0 1 2 and rest elements 0
for n = 7, the elements of the leading diagonal are 3 2 1 0 1 2 3 and rest elements are 0.
Any help will be highly appreciated.

Best Answer

This works for odd ā€˜nā€™:
dv = @(n) abs(diag(unique(fix(-n/2:n/2)))); % Create Diagonal Matrix
n = 5;
m5 = dv(n)
n = 7;
m7 = dv(n)
producing:
m5 =
2 0 0 0 0
0 1 0 0 0
0 0 0 0 0
0 0 0 1 0
0 0 0 0 2
m7 =
3 0 0 0 0 0 0
0 2 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 2 0
0 0 0 0 0 0 3
.