Vector to lower-triangular matrix

11 ビュー (過去 30 日間)
Somebody
Somebody 2013 年 3 月 5 日
編集済み: Matt J 2021 年 6 月 29 日
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!

回答 (1 件)

Matt J
Matt J 2021 年 6 月 29 日
編集済み: Matt J 2021 年 6 月 29 日
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

カテゴリ

Help Center および File ExchangeMultivariate Distributions についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by