convert vector to matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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
0 Kommentare
Akzeptierte Antwort
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
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
Weitere Antworten (0)
Siehe auch
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!