2012-03-17 9 views
6

Chcę wygenerować losowy prawdziwy symetrycznej macierzy kwadratowej z wpisami równomiernie rozmieszczonych między 0 a 1. moja próba jest: a = rand(5); b = a + a.'Jak wygenerować losowy prawdziwe symetrycznej macierzy kwadratowej o równomiernie rozłożonych wpisów

Moim zmartwieniem jest że podczas gdy macierz a jest równomiernie rozłożona zgodnie z dokumentacją, może nie być macierzą b, ponieważ średnia z dwóch liczb losowych może nie być taka sama jak pierwotna liczba.

Próbowałem użyć hist(a); hist(b) , ale nie wiem, jak interpretować wynikowy wykres. EDYCJA: Według Oli Matrix b nie jest już równomiernie rozmieszczona, czy istnieje sposób, aby to zrobić w ten sposób?

Odpowiedz

14

Nie, jeśli to zrobisz, wtedy b nie będzie rozprowadzany równomiernie; będzie miał triangular distribution.

Jak o coś takiego:

a = rand(5); 
b = triu(a) + triu(a,1)'; 

gdzie triu() zajmuje górny trójkątna część matrycy.

+0

dziękuje, Oli, jakakolwiek rada, jak zrobić to równomiernie dystrybuowane? – Aina

+0

@Aina: Zobacz moją zaktualizowaną odpowiedź. –

+0

dzięki, Oli, więc używanie funkcji triu zapewnia równomierną dystrybucję? Właśnie go uruchomiłem, a hist (b) wygląda inaczej niż to, co miałem dla mojej matrycy b. – Aina

2

Można uzyskać tylko równomiernie rozmieszczone wpisy na połowie macierzy.

a=rand(5); 
b=triu(a).'+triu(a,1); 
+0

dziękuje g24l, więc NIE MOŻNA mieć losowej symetrycznej macierzy z równomiernie rozłożonymi wpisami? – Aina

+0

@Aina: Mówiłem o tym, jak wygenerować matrycę. Elementy macierzy są równomiernie rozmieszczone, ale nie są przypadkowe, a nie iid. –

Powiązane problemy