Filter löschen
Filter löschen

convert vector to matrix

1 Ansicht (letzte 30 Tage)
Shivik Garg
Shivik Garg am 3 Jul. 2018
Bearbeitet: Stephen23 am 3 Jul. 2018
i have a vector
a=[1,2,3,4,5,6];
i want to convert it to matrix such that the diagonals are all 0 and the rest of the elements are:
M=[0 1 2 3;1 0 4 5;2 4 0 6;3 5 6 0];
0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0

Akzeptierte Antwort

Stephen23
Stephen23 am 3 Jul. 2018
Bearbeitet: Stephen23 am 3 Jul. 2018
>> a = [1,2,3,4,5,6];
>> M = tril(ones(4),-1);
>> M(M>0) = a;
>> M = M+M.'
M =
0 1 2 3
1 0 4 5
2 4 0 6
3 5 6 0
And if you want to automatically adjust the size you can basically invert the binomial coefficient:
>> N = (sqrt(1+numel(a)*8)-1)/2;
>> M = tril(ones(N+1),-1);
  1 Kommentar
Rik
Rik am 3 Jul. 2018
If you need to automatically find the correct size:
a = [1,2,3,4,5,6];
M = tril(ones(.5+0.5*sqrt(8*numel(a)+1)),-1);
M(M>0) = a;
M = M+M.';
>> a = 1:3;
>> M = tril(ones(.5+0.5*sqrt(8*numel(a)+1)),-1);
>> M(M>0) = a;
>> M = M+M.'
M =
0 1 2
1 0 3
2 3 0

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Electrical Block Libraries finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by