⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgauss.m

📁 matlab最新统计模式识别工具箱
💻 M
字号:
function varargout=pgauss(model,options)% PGAUSS Vizualizes set of bivariate Gaussians.%% Synopsis:%  pgauss(model)%  pgauss(model,options)%  h = pgauss(...)%% Description:%  pgauss(model) visualizes a set of bivariate Gaussians as%   isolines (ellipse) with equal probability density functions.%   The Gaussians are given by mean vectors model.Mean [2xncomp]%   and covariance matrices model.Cov [2x2xncomp]. If labels%   model.y [1xncomp] are given then the Gaussians are distinguished%   by colors correspoding to labels.% %  pgauss(model,options) structure options controls visualization;%   If options.fill equals 1 then Ellipses are filled otherwise only%   contours are plotted. The isolines to be drawn are given by %   values of probability distribution function in field %   options.p [1xncomp]. If length(option.p)==1 then isolines for%   all Gaussians are drawn for the same value.%  %  h = pgauss(...) returns handles of used graphics objects.%    % Input:%  model [struct] Parameters of Gaussian distributions:%   .Mean [2 x ncomp] Mean vectors of ncomp Gaussians.%   .Cov [2 x 2 x ncomp] Covariance matrices.%   .y [1 x ncomp] (optional) Labels of Gaussians used to distingush %     them by colors. If y is not given then y = 1:ncomp is used.%  %  options.p [1 x ncomp] Value of p.d.f on the draw isolines.%   If not given then p is computed to make non-overlapping isolines.%  options.fill [int] If 1 then ellipses are filled (default 0).%% Output:%  h [1 x nobjects] Handles of used graphics objects.%% Example:%  data = load('riply_trn');%  model = mlcgmm( data );%  figure; hold on;%  ppatterns(data);%  pgauss( model );%% About: Statistical Pattern Recognition Toolbox% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac% <a href="http://www.cvut.cz">Czech Technical University Prague</a>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a>% Modifications:% 23-aug-2004, VF, uses model.y to color plots in 1D case% 30-apr-2004, VF[dim,ncomp]=size(model.Mean);if nargin < 2, options=[]; else options=c2s(options); endif ~isfield( options, 'fill'), options.fill= 0; endif ~isfield( options, 'interp'), options.interp = 30; endif ~isfield(model,'y'), model.y = 1:ncomp; endoldhold=ishold;hold on;h=[];if dim == 1,   % univariate variances can be given as a vector  if size(model.Cov,1) ~= size(model.Cov,2),     model.Cov = reshape(model.Cov,1,1,ncomp);   end  a = axis;  x = linspace(a(1),a(2),options.interp*3);  for i=1:ncomp,    y = pdfgauss(x, model.Mean(i),model.Cov(:,:,i));    h = [h, plot(x,y,marker_color(model.y(i)))];  end  else % computes isolines values automatically if ~isfield( options, 'p'),     minr=inf;    if ncomp > 1,      for i=1:ncomp-1,      for j=i+1:ncomp,        distr.Mean=[model.Mean(:,i),model.Mean(:,j)];        distr.Cov(:,:,1)=model.Cov(:,:,i);        distr.Cov(:,:,2)=model.Cov(:,:,j);        fld = androrig( distr );              if minr > fld.r,           minr = fld.r;           minCov = 0.5*(model.Cov(:,:,j)+model.Cov(:,:,i));        end      end    end    for i=1:ncomp,      options.p(i) = exp(-0.5*(minr*0.95)^2)/...                     (2*pi*sqrt(det(model.Cov(:,:,i))));    end    else    minr = 1;    options.p = exp(-0.5*(minr*0.95)^2)/...                     (2*pi*sqrt(det(model.Cov)));  end elseif length(options.p) == 1 ,   options.p = options.p*ones(ncomp,1);  end for i=1:ncomp,  r = sqrt( -2*log(options.p(i)*2*pi*sqrt(det(model.Cov(:,:,i)))) );    [x,y] = ellips(model.Mean(:,i),inv(model.Cov(:,:,i)),...      r,options.interp );    if options.fill,    h=[h,fill(x,y,marker_color(model.y(i)))];    h=[h,plot(model.Mean(1,i),model.Mean(2,i),'k+')];    h=[h,text(model.Mean(1,i),model.Mean(2,i),['gauss ' num2str(i)])];    set(h(end),'HorizontalAlignment','center', ...      'VerticalAlignment','bottom','fontsize',12 );    T = [[options.p(i);length(x)] [x;y]];    tmp1=clabel(T,'fontsize',12);    h = [h,tmp1(:)'];  else     h=[h,plot(x,y,marker_color(model.y(i)))];    h=[h,plot(model.Mean(1,i),model.Mean(2,i),['+' marker_color(model.y(i))])];    h=[h,text(model.Mean(1,i),model.Mean(2,i),['gauss ' num2str(i)])];    set(h(end),'HorizontalAlignment','center', ...      'VerticalAlignment','bottom','fontsize',12,...      'color',marker_color(model.y(i)));    T = [[options.p(i);length(x)] [x;y]];    tmp1=clabel(T,'fontsize',12);    set(tmp1,'Color',marker_color(model.y(i)));    h = [h,tmp1(:)'];  end  drawnow; endendif ~oldhold, hold off; endif nargout > 0, varargout{1} = h; endreturn;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -