matlab:画二维正态分布密度函数图
首先,把二維正態(tài)分布密度函數(shù)的公式貼這里
這只圖好大啊~~
但是上面的那個是多維正態(tài)分布的密度函數(shù)的通式,那個n階是對稱正定方陣叫做協(xié)方差矩陣,其中的x,pi,u都是向量形式。雖然這個式子很酷,但是用在matlab里畫圖不太方面,下面換一個
這個公式與上面的等價,只不過把向量和矩陣展開,計算出來。我們可以用這個式子畫圖。
因為二維函數(shù)的形式是:z=f(x,y)
所以必須先選擇一些點(diǎn),然后計算出f(x,y)。這些點(diǎn)分布在一個平面上,而z則在三維空間。
如何選擇平面上的點(diǎn)陣?
[x,y]=meshgrid(a,b)
meshgrid就是這樣一個生成點(diǎn)陣的函數(shù),這個meshgrid理解起來有點(diǎn)繞,不過舉個例子就馬上能力明白了。下面是matlab里面的一段截圖:
我們可以看到meshgrid生成了兩個同樣大小的矩陣,第一個矩陣是通過把第一個參數(shù)[1:3]順著行的方向復(fù)制了4次,4是第二個參數(shù)的長度,同樣第二個矩陣是第二個參數(shù)順著列的方向復(fù)制了三次,3是第一個參數(shù)向量的長度。而這個點(diǎn)陣就是:
(1,2) (2,2) (3,2)
(1,3) (2,3) (3,3)
...
看出什么意思了吧?就這個意思。
至于這兩個參數(shù)到底怎么選,這樣根據(jù)你的正態(tài)分布的均值,盡量使點(diǎn)陣的中心與分布的均值靠近。
好了,有了平面上的點(diǎn),就來算這些點(diǎn)對應(yīng)的函數(shù)值。往函數(shù)里套就行,下面是代碼:
function Z=drawGaussian(u,v,x,y) % u,vector,expactation;v,covariance matrix %x=150:0.5:190; %y=35:110; [X,Y]=meshgrid(x,y); DX=v(1,1); %X的方差 dx=sqrt(DX); DY=v(2,2); %Y的方差 dy=sqrt(DY); COV=v(1,2); %X Y的協(xié)方差 r=COV/(dx*dy); part1=1/(2*pi*dx*dy*sqrt(1-r^2)); p1=-1/(2*(1-r^2)); px=(X-u(1)).^2./DX; py=(Y-u(2)).^2./DY; pxy=2*r.*(X-u(1)).*(Y-u(2))./(dx*dy); Z=part1*exp(p1*(px-pxy+py)); mesh(x,y,Z);
最后一句mesh(x,y,Z) 是畫圖函數(shù),畫出的圖行大概是下面這個樣子:
總結(jié)
以上是生活随笔為你收集整理的matlab:画二维正态分布密度函数图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 火狐一打开就弹出错误控制台 解决方案 及
- 下一篇: 四款新一代65英寸电视谁更强 65英寸电