2.高斯函数计算。编写一个 MATLAB 函数,计算给定向量x处高斯分布 (m,S)的值。
时间: 2024-10-12 12:05:52 浏览: 38
【电磁】基于mtalab极光场定向电流的实证模型【含Matlab源码 8882期】.zip
高斯函数也称为正态分布函数,通常用于描述随机变量的概率密度。在MATLAB中,可以编写一个函数`gaussian_pdf`来计算向量`x`在均值`m`和标准差矩阵`S`下的高斯分布概率密度。下面是函数的基本结构:
```matlab
function pdf = gaussian_pdf(x, m, S)
% GAUSSIAN_PDF 计算高斯分布的PDF值
% 输入:
% x: 要评估分布的向量
% m: 高斯分布的均值向量
% S: 方差矩阵,也可以是协方差矩阵(如果对角元素代表方差,非对角元素表示协方差)
%
% 输出:
% pdf: 向量x对应于高斯分布的概率密度值
% 检查输入维度是否匹配
if ~isequal(size(m), size(S)) || size(S, 2) ~= length(m)
error('Input dimensions are not compatible for a Gaussian distribution.');
end
% 如果S是对角矩阵,提取方差
if isdiagonal(S)
sigma = sqrt(diag(S));
else
sigma = sqrt(eigvalsh(S)); % 使用谱分解得到对角化后的方差
end
% 计算z-score(标准化得分)
z = (x - m) ./ sigma;
% 应用高斯分布公式,注意减去0.5是因为使用了自然对数
pdf = exp(-z.' * z / 2);
pdf = pdf ./ (2 * pi * prod(sigma)^(length(m) / 2)); % 正则化因子
end
```
阅读全文