📄 pgauss.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>pgauss.m</title><link rel="stylesheet" type="text/css" href="../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>varargout</span>=<span class=defun_name>pgauss</span>(<span class=defun_in>model,options</span>)<br><span class=h1>% PGAUSS Vizualizes set of bivariate Gaussians.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% pgauss(model)</span><br><span class=help>% pgauss(model,options)</span><br><span class=help>% h = pgauss(...)</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% pgauss(model) visualizes a set of bivariate Gaussians as</span><br><span class=help>% isolines (ellipse) with equal probability density functions.</span><br><span class=help>% The Gaussians are given by mean vectors model.Mean [2xncomp]</span><br><span class=help>% and covariance matrices model.Cov [2x2xncomp]. If labels</span><br><span class=help>% model.y [1xncomp] are given then the Gaussians are distinguished</span><br><span class=help>% by colors correspoding to labels.</span><br><span class=help>% </span><br><span class=help>% pgauss(model,options) structure options controls visualization;</span><br><span class=help>% If options.fill equals 1 then Ellipses are filled otherwise only</span><br><span class=help>% contours are plotted. The isolines to be drawn are given by </span><br><span class=help>% values of probability distribution function in field </span><br><span class=help>% options.p [1xncomp]. If length(option.p)==1 then isolines for</span><br><span class=help>% all Gaussians are drawn for the same value.</span><br><span class=help>% </span><br><span class=help>% h = pgauss(...) returns handles of used graphics objects.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% model [struct] Parameters of Gaussian distributions:</span><br><span class=help>% .Mean [2 x ncomp] Mean vectors of ncomp Gaussians.</span><br><span class=help>% .Cov [2 x 2 x ncomp] Covariance matrices.</span><br><span class=help>% .y [1 x ncomp] (optional) Labels of Gaussians used to distingush </span><br><span class=help>% them by colors. If y is not given then y = 1:ncomp is used.</span><br><span class=help>% </span><br><span class=help>% options.p [1 x ncomp] Value of p.d.f on the draw isolines.</span><br><span class=help>% If not given then p is computed to make non-overlapping isolines.</span><br><span class=help>% options.fill [int] If 1 then ellipses are filled (default 0).</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% h [1 x nobjects] Handles of used graphics objects.</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Example:</span></span><br><span class=help>% data = load('riply_trn');</span><br><span class=help>% model = mlcgmm( data );</span><br><span class=help>% figure; hold on;</span><br><span class=help>% ppatterns(data);</span><br><span class=help>% pgauss( model );</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 23-aug-2004, VF, uses model.y to color plots in 1D case</span><br><span class=help1>% 30-apr-2004, VF</span><br><br><hr>[dim,ncomp]=size(model.Mean);<br><br><span class=keyword>if</span> <span class=stack>nargin</span> < 2, options=[]; <span class=keyword>else</span> options=c2s(options); <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield( options, <span class=quotes>'fill'</span>), options.fill= 0; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield( options, <span class=quotes>'interp'</span>), options.interp = 30; <span class=keyword>end</span><br><span class=keyword>if</span> ~isfield(model,<span class=quotes>'y'</span>), model.y = 1:ncomp; <span class=keyword>end</span><br><br>oldhold=ishold;<br>hold on;<br>h=[];<br><br><span class=keyword>if</span> dim == 1,<br> <br> <span class=comment>% univariate variances can be given as a vector</span><br> <span class=keyword>if</span> size(model.Cov,1) ~= size(model.Cov,2), <br> model.Cov = reshape(model.Cov,1,1,ncomp); <br> <span class=keyword>end</span><br><br> a = <span class=graph>axis</span>;<br> x = linspace(a(1),a(2),options.interp*3);<br> <span class=keyword>for</span> i=1:ncomp,<br> y = pdfgauss(x, model.Mean(i),model.Cov(:,:,i));<br> h = [h, <span class=graph>plot</span>(x,y,marker_color(model.y(i)))];<br> <span class=keyword>end</span><br> <br><span class=keyword>else</span><br><br> <span class=comment>% computes isolines values automatically</span><br> <span class=keyword>if</span> ~isfield( options, <span class=quotes>'p'</span>), <br> <br> minr=inf;<br> <br> <span class=keyword>if</span> ncomp > 1,<br> <br> <span class=keyword>for</span> i=1:ncomp-1,<br> <span class=keyword>for</span> j=i+1:ncomp,<br> distr.Mean=[model.Mean(:,i),model.Mean(:,j)];<br> distr.Cov(:,:,1)=model.Cov(:,:,i);<br> distr.Cov(:,:,2)=model.Cov(:,:,j);<br> fld = androrig( distr );<br> <br> <span class=keyword>if</span> minr > fld.r, <br> minr = fld.r; <br> minCov = 0.5*(model.Cov(:,:,j)+model.Cov(:,:,i));<br> <span class=keyword>end</span><br> <span class=keyword>end</span><br> <span class=keyword>end</span><br><br> <span class=keyword>for</span> i=1:ncomp,<br> options.p(i) = exp(-0.5*(minr*0.95)^2)/...<br> (2*pi*sqrt(det(model.Cov(:,:,i))));<br> <span class=keyword>end</span><br> <br> <span class=keyword>else</span><br> minr = 1;<br> options.p = exp(-0.5*(minr*0.95)^2)/...<br> (2*pi*sqrt(det(model.Cov)));<br> <span class=keyword>end</span><br><br> <span class=keyword>elseif</span> length(options.p) == 1 , <br> options.p = options.p*ones(ncomp,1); <br> <span class=keyword>end</span><br><br> <span class=keyword>for</span> i=1:ncomp,<br><br> r = sqrt( -2*log(options.p(i)*2*pi*sqrt(det(model.Cov(:,:,i)))) );<br> <br> [x,y] = ellips(model.Mean(:,i),inv(model.Cov(:,:,i)),...<br> r,options.interp );<br> <br> <span class=keyword>if</span> options.fill,<br> h=[h,fill(x,y,marker_color(model.y(i)))];<br> h=[h,<span class=graph>plot</span>(model.Mean(1,i),model.Mean(2,i),<span class=quotes>'k+'</span>)];<br> h=[h,text(model.Mean(1,i),model.Mean(2,i),[<span class=quotes>'gauss '</span> num2str(i)])];<br> <span class=graph>set</span>(h(<span class=keyword>end</span>),<span class=quotes>'HorizontalAlignment'</span>,<span class=quotes>'center'</span>, ...<br> <span class=quotes>'VerticalAlignment'</span>,<span class=quotes>'bottom'</span>,<span class=quotes>'fontsize'</span>,12 );<br> T = [[options.p(i);length(x)] [x;y]];<br> tmp1=clabel(T,<span class=quotes>'fontsize'</span>,12);<br> h = [h,tmp1(:)'];<br> <span class=keyword>else</span> <br> h=[h,<span class=graph>plot</span>(x,y,marker_color(model.y(i)))];<br> h=[h,<span class=graph>plot</span>(model.Mean(1,i),model.Mean(2,i),[<span class=quotes>'+'</span> marker_color(model.y(i))])];<br> h=[h,text(model.Mean(1,i),model.Mean(2,i),[<span class=quotes>'gauss '</span> num2str(i)])];<br> <span class=graph>set</span>(h(<span class=keyword>end</span>),<span class=quotes>'HorizontalAlignment'</span>,<span class=quotes>'center'</span>, ...<br> <span class=quotes>'VerticalAlignment'</span>,<span class=quotes>'bottom'</span>,<span class=quotes>'fontsize'</span>,12,...<br> <span class=quotes>'color'</span>,marker_color(model.y(i)));<br> T = [[options.p(i);length(x)] [x;y]];<br> tmp1=clabel(T,<span class=quotes>'fontsize'</span>,12);<br> <span class=graph>set</span>(tmp1,<span class=quotes>'Color'</span>,marker_color(model.y(i)));<br> h = [h,tmp1(:)'];<br> <span class=keyword>end</span><br><br> drawnow;<br> <span class=keyword>end</span><br><span class=keyword>end</span><br><br><span class=keyword>if</span> ~oldhold, hold off; <span class=keyword>end</span><br><br><span class=keyword>if</span> <span class=stack>nargout</span> > 0, <span class=stack>varargout</span>{1} = h; <span class=keyword>end</span><br><br><span class=jump>return</span>;<br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -