Vector to lower-triangular matrix

12 visualizzazioni (ultimi 30 giorni)
Somebody
Somebody il 5 Mar 2013
Modificato: Matt J il 29 Giu 2021
Hello.
Im trying to estimate multivariate normal distribution. Correlation matrix is one of the parameters, and I need to have all parameters in a vector for fmincon.
I can vectorize a lower-triangular of correlation matrix, indeed, but how do I do an opposite?
I mean, I have a matrix C - a correlation matrix:
1 c12 c13
C = c12 1 c23
c13 c23 1
Then I do:
a = tril(C,-1);
a = a(:);
b = a(a(:)>0);
b = [c12; c13; c23];
I get b - a vectorized lower-triangular matrix. How can I do an opposite (for matrices of any dimensions)? To get a lower-triangular matrix from a vector? Thanks!

Risposte (1)

Matt J
Matt J il 29 Giu 2021
Modificato: Matt J il 29 Giu 2021
b=rand(1,10)
b = 1×10
0.5909 0.3646 0.0131 0.7843 0.1867 0.2957 0.2750 0.2019 0.1148 0.6168
n=roots([1,1,-2*numel(b)]);
n=n(n>0)+1;
validateattributes(n,{'numeric'},{'positive', 'integer'}) %numel(b) must be a pyramidal number
C=tril(ones(n),-1);
C(logical(C))=b;
C=C+C.'+eye(n)
C = 5×5
1.0000 0.5909 0.3646 0.0131 0.7843 0.5909 1.0000 0.1867 0.2957 0.2750 0.3646 0.1867 1.0000 0.2019 0.1148 0.0131 0.2957 0.2019 1.0000 0.6168 0.7843 0.2750 0.1148 0.6168 1.0000

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by