How to generate a random positive semi-definite matrix of certain size with real numbers in a certain range?
6 次查看(过去 30 天)
显示 更早的评论
I'm looking for a way to generate a *random positive semi-definite matrix* of size n with real number in the *range* from 0 to 4 for example.
I didn't find any way to directly generate such a matrix. However, I found that *Lehmer* matrix is a positive definite matrix that when you raise each element to a nonnegative power, you get a positive semi-definite matrix.
So, I did something like this
A=16*gallery('lehmer',100) %matrix of size 100*100 in range 0-16
B=A.^(1/2) %scale down to range 0-4
So my questions are:
1. I wonder if that maintains the randomness of the matrix?
2. Is there any direct way to generate random positive semidefinite matrix?
Thanks,
0 个评论
采纳的回答
Walter Roberson
2011-10-21
2 个评论
Walter Roberson
2011-10-26
Your question as phrased was about constructing random PD matrices whose entries were all within a certain range.
That is a different matter than constructing matrices whose entries have a uniform distribution within a given range and the matrix as a whole is PD. Such matrices appear to be relatively rare to start with; to require uniform random distribution on the entries appears to make them difficult to generate.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Random Number Generation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!