在您开始谈论 normpdf 时,我已经失去了您。你有一个多元正态,这就是你需要处理的。不确定您希望从这里的单变量法线中得到什么。
如果您想获得马氏距离为 1 的多元正态分布的概率值(即与分布均值相差一个标准差),您可以通过在值 [m+s,0] 处评估 mvnpdf 来做到这一点,其中、m = mu(1) 和 s = sqrt( sigma(1,1) )。
然后,您可以将其与适当的轮廓函数一起使用以获得所需的轮廓。
编辑:这是一个例子。
pkg load statistics
% create 1000 samples from a known multivariate normal
Observations = mvnrnd( [0,0], [4, 1; 1 ,2], 1000 );
% Get mean and covariance estimates from sample
SampleMean = mean( Observations, 1 ) % average along rows
SampleCovariance = cov( Observations )
% Get mean and standard deviation in first dimension (i.e. "x-axis")
Mean_firstDimension = SampleMean(1)
StdDev_firstDimension = sqrt( SampleCovariance(1,1) )
% Get gaussian values at malanobis distance of 1, 2, and 3
MVN_value_at_mahalanobis_distance_of_one = mvnpdf( [ Mean_firstDimension + StdDev_firstDimension, 0], SampleMean, SampleCovariance )
MVN_value_at_mahalanobis_distance_of_two = mvnpdf( [ Mean_firstDimension + 2 * StdDev_firstDimension, 0], SampleMean, SampleCovariance )
MVN_value_at_mahalanobis_distance_of_three = mvnpdf( [ Mean_firstDimension + 3 * StdDev_firstDimension, 0], SampleMean, SampleCovariance )
% Define grid:
[GridX, GridY] = ndgrid( -8:0.1:8, -8:0.1:8 );
GridValues = mvnpdf( [GridX(:), GridY(:)], SampleMean, SampleCovariance );
GridValues = reshape( GridValues, size( GridX ) );
% Plot Observations
plot( Observations(:,1), Observations(:,2), 'o', 'markerfacecolor', 'g', 'markeredgecolor', [0,0.5,0], 'linewidth', 1.5 );
hold on;
% Plot contours over grid
contour( GridX, GridY, GridValues, ...
[ MVN_value_at_mahalanobis_distance_of_three, ...
MVN_value_at_mahalanobis_distance_of_two, ...
MVN_value_at_mahalanobis_distance_of_one ...
],
'linewidth', 2
)
hold off;
% Set nice limits and colours for background
axis([-8, +8, -8, +8]); axis equal square;
set(gca, 'color', 'k');
set(gcf, 'color', [0.75, 0.75, 0.75]);