matlab實現復高斯分佈---語句和解釋
網上對於matlab如何產生均值為0,方差為1的復高斯分佈一般都會給出這個答案:
s = sqrt(var/2)*(randn(1,K) +j*randn(1,K)) (答案1)
其中s表示復高斯矩陣,var表示功率(即方差),而K表示取樣數(這個例子中var為1)
究竟這個答案是否正確呢?網上已經有不少人給出瞭解釋,現在我給出我自己的證明和看法:
第一部分:
首先是要明確什麼是復高斯分佈,對於這個內容,網站:http://everything2.com/title/complex+Gaussian+distribution 給出了比較好的解釋,我再解釋一下:我們稱復隨機變數z=x+iy是一個復隨機變數或者服從復高斯分佈如果它滿足一下條件:
a、它的實部x和虛部y服從聯合高斯分佈
b、它的實部x和虛部y相互獨立
c、它的實部x和虛部y擁有相同的方差
以mx and my 表示x和y的均值,則z的均值為E[z]=mz=mx+i*my,它的方差定義為:E[(z-mz)(z-mz)*] (*表示共軛,公式可在維基百科上查到),因為複數的性質zz*=|z|^2=|z^2|,可將方差表示為E[|z-mz|^2],方差的大小為x或y的方差的兩倍(比較一下上述網站的方差定義就知道了)。
第二部分:
對復高斯分佈瞭解了之後,現在解釋一下randn這個函式,這個函式主要的作用是產生均值為0,方差為1的正態隨機分佈數或矩陣,而randn(n,m)是產生一個m*n的隨機項矩陣
第三部分:
現在對答案1進行解釋,根據均值的性質:E[cX]=cE[X],方差的性質:D[cX]=(c^2)D[X],可得s = sqrt(var/2)*(randn(1,K) +j*randn(1,K)) 的均值為sqrt(var/2)*0=0,
方差為2*[(sqrt(var/2))^2]*1=2*(1/2)=1,同時實部和虛部都滿足要求,因此這個答案是能產生均值為0,方差為1的復高斯分佈的。
當要改變方差是,只需要改變var的值即可(這個答案的均值都為0)。