bnorm.m

来自「This Two-Category Classifier Using Discr」· M 代码 · 共 41 行

M
41
字号
function [bivar,Z1,Z2] = bnorm(mu, covar, range, n)
%function [bivar,Z1,Z2] = bnorm(mu, covar, range, n)
% Generate Bivariate Gaussian (Normal) data and plot from given mean and covariance
%
% mu is 2x1 mean vector
% covar 2x2 Covariance matrix
% range is 1x2 matrix to define plot range
% n is scaler number of data to be generated in each X-axis and Y-axis
%
% Developed by: Kirit Patel
% EE 574: Pattern Recognition
% Date: 11/30/2002

if (nargin < 4), n = 50; end 
if (nargin < 3), range = [-10 10]; end
if (nargin < 2), errordlg('Not enough input arguments','Input Error','on'); return; end
errstr = {'Covariance Matrix is Singular or Diagonal',
    'element is negative or Determinant is negative'};
[Z1, Z2] = meshgrid(linspace(range(1), range(2), n));
X = linspace(range(1), range(2), n);
if (isequal(size(mu),[2 1])==1)&(isequal(size(covar),[2 2])==1)
    Xm = X-mu(1);
    Ym = X-mu(2);

    if det(covar) <= 0 
        errordlg(errstr,'Input Matrix Error','on')
        return    
    end
    for row = 1:n
            eterm(row,:) = diag([Xm;ones(1,n).*Ym(row)]'*inv(covar)*[Xm;ones(1,n).*Ym(row)])';
    end;
    den = sqrt((2.*pi).^length(mu).*abs(det(covar)));
    bivar = exp(-0.5.*eterm)./den;
    if (nargout == 0) 
        mesh(Z1,Z2,bivar)
        xlabel('x-axis'); ylabel('y-axis'); zlabel('Density function, p(x|w)');
        title('Normal Bivariate Density')
    end 
else 
    errordlg('Matrix Dimensions are improper','Input Matrix Error','on')
end

⌨️ 快捷键说明

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