由4个正态分布的函数与2行1列的矩阵相乘组成的2行1列的矩阵组成的二维函数,用MATLAB画出2d的高斯分布图
时间: 2024-05-25 21:15:44 浏览: 108
由于题目中没有给出具体的正态分布函数,下面给出一个示例函数:
f1 = @(x,y) exp(-((x-2).^2+(y-2).^2)/2);
f2 = @(x,y) exp(-((x+2).^2+(y-2).^2)/2);
f3 = @(x,y) exp(-((x-2).^2+(y+2).^2)/2);
f4 = @(x,y) exp(-((x+2).^2+(y+2).^2)/2);
% 构造矩阵
A = [1 2; 3 4];
% 构造二维网格
x = linspace(-5, 5, 100);
y = linspace(-5, 5, 100);
[X, Y] = meshgrid(x, y);
% 计算函数值
Z = A(1,1)*f1(X,Y) + A(1,2)*f2(X,Y) + A(2,1)*f3(X,Y) + A(2,2)*f4(X,Y);
% 绘制高斯分布图
surf(X, Y, Z);
xlabel('x');
ylabel('y');
zlabel('z');
title('Gaussian Distribution');
colormap(jet);
colorbar;
相关问题
由4个正态分布的函数与2行1列的矩阵相乘组成的2行1列的矩阵组成的二维概率密度函数,用MATLAB画出2d的高斯分布图
假设4个正态分布函数的均值向量分别为mu1、mu2、mu3、mu4,协方差矩阵分别为sigma1、sigma2、sigma3、sigma4,2行1列的矩阵为a,则二维概率密度函数为:
f(x,y) = [1/(2*pi*det(sigma1))^0.5 * exp(-0.5 * ([x;y]-mu1)' * inv(sigma1) * ([x;y]-mu1))] * a(1) +
[1/(2*pi*det(sigma2))^0.5 * exp(-0.5 * ([x;y]-mu2)' * inv(sigma2) * ([x;y]-mu2))] * a(2) +
[1/(2*pi*det(sigma3))^0.5 * exp(-0.5 * ([x;y]-mu3)' * inv(sigma3) * ([x;y]-mu3))] * a(3) +
[1/(2*pi*det(sigma4))^0.5 * exp(-0.5 * ([x;y]-mu4)' * inv(sigma4) * ([x;y]-mu4))] * a(4)
其中,^0.5表示开根号,inv表示矩阵求逆,det表示矩阵的行列式。
可以使用MATLAB中的meshgrid函数生成x、y网格点,然后计算每个点的概率密度函数值,利用surf函数将结果可视化,代码示例:
% 定义4个正态分布函数的均值向量和协方差矩阵
mu1 = [0; 0];
sigma1 = [1 0.5; 0.5 1];
mu2 = [2; 2];
sigma2 = [1 -0.5; -0.5 1];
mu3 = [-2; 2];
sigma3 = [2 0; 0 0.5];
mu4 = [2; -2];
sigma4 = [0.5 0; 0 2];
% 定义2行1列的矩阵
a = [1; 2];
% 生成x、y网格点
x = linspace(-5, 5, 100);
y = linspace(-5, 5, 100);
[X, Y] = meshgrid(x, y);
% 计算每个点的概率密度函数值
f = zeros(size(X));
for i = 1:numel(X)
f(i) = (1/(2*pi*det(sigma1))^0.5 * exp(-0.5 * ([X(i);Y(i)]-mu1)' * inv(sigma1) * ([X(i);Y(i)]-mu1))) * a(1) + ...
(1/(2*pi*det(sigma2))^0.5 * exp(-0.5 * ([X(i);Y(i)]-mu2)' * inv(sigma2) * ([X(i);Y(i)]-mu2))) * a(2) + ...
(1/(2*pi*det(sigma3))^0.5 * exp(-0.5 * ([X(i);Y(i)]-mu3)' * inv(sigma3) * ([X(i);Y(i)]-mu3))) * a(3) + ...
(1/(2*pi*det(sigma4))^0.5 * exp(-0.5 * ([X(i);Y(i)]-mu4)' * inv(sigma4) * ([X(i);Y(i)]-mu4))) * a(4);
end
% 绘制图像
surf(X, Y, f);
xlabel('x');
ylabel('y');
zlabel('Probability density');
title('2D Gaussian distribution');
python写二维正态分布的概率密度函数
在Python中,可以使用`scipy.stats`模块中的`multivariate_normal`类来定义和计算二维正态分布(高斯分布)的概率密度函数。二维正态分布的概率密度函数由均值向量和协方差矩阵定义。
下面是一个简单的例子,展示了如何使用这个类来创建二维正态分布,并计算特定点的概率密度值:
```python
import numpy as np
from scipy.stats import multivariate_normal
# 均值向量(mean vector),这里是二维空间中的一个点,例如 (x0, y0)
mean = [0, 0]
# 协方差矩阵(covariance matrix),定义了变量之间的相关性和方差大小
# 例如,下面的协方差矩阵表示两个变量是独立的,并且每个变量的方差都是1
cov = [[1, 0], [0, 1]]
# 创建二维正态分布对象
mvn = multivariate_normal(mean=mean, cov=cov)
# 计算特定点 (x, y) 的概率密度值
point = [1, 1]
density = mvn.pdf(point)
print("在点 ({}, {}) 处的概率密度值为: {}".format(point[0], point[1], density))
```
在上述代码中,我们首先导入了所需的`numpy`和`scipy.stats`模块。接着定义了均值向量和协方差矩阵,并创建了一个`multivariate_normal`类的实例`mvn`。最后,我们使用`pdf`方法来计算点(1, 1)处的概率密度值。
阅读全文