MATLAB:如何绘制三维概率分布?(涉及贝叶斯规则)

MATLAB:如何绘制三维概率分布?(涉及贝叶斯规则),matlab,multidimensional-array,bayesian,Matlab,Multidimensional Array,Bayesian,为了给你们一些背景知识,我试图用贝叶斯规则找出一个研究问题的最佳参数,我这里的问题是关于生成这些参数的先验概率分布 假设我的两个参数是A和B。我知道A的先验分布将类似于伽马分布,B的分布将类似于归一化高斯分布。目标是在x轴和y轴上绘制这些分布,然后在z轴上绘制联合概率P(A,B)=P(A)*P(B)。如果我能做到这一点,那么我就能确定A和B的哪些值最有可能解决我的问题 所以我输入MATLAB A = linspace(-50,50,1000); B = A; gamma = gampdf(A,5

为了给你们一些背景知识,我试图用贝叶斯规则找出一个研究问题的最佳参数,我这里的问题是关于生成这些参数的先验概率分布

假设我的两个参数是A和B。我知道A的先验分布将类似于伽马分布,B的分布将类似于归一化高斯分布。目标是在x轴和y轴上绘制这些分布,然后在z轴上绘制联合概率P(A,B)=P(A)*P(B)。如果我能做到这一点,那么我就能确定A和B的哪些值最有可能解决我的问题

所以我输入MATLAB

A = linspace(-50,50,1000);
B = A;
gamma = gampdf(A,5,5);
norm = normpdf(B,0,5);
[A B] = meshgrid(A,B);
Z = gamma'*norm;
surf(A,B,Z)
当我这样做时,我得到了:

旋转这个也许会给我一些我想要的东西,但因为它全是黑色的,我不能确定

是否有一种方法可以使其更容易区分并使网格工作?(我猜网格不起作用,因为我的Z不是a和B的函数,而是gamma和norm的函数)


如果有任何帮助,我将不胜感激,因为我完全愿意接受其他方法。

网格线非常密集(每个维度上有1000条线),以至于看起来都是黑色的。使用
set
关闭网格线:

h = surf(A,B,Z);
set(h,'linestyle','none');

我强烈怀疑这个问题是其他几个问题的重复,而实际问题是边缘太密集,以至于你根本看不到下面的颜色。如果链接的解决方案对你有效,我认为这个问题应该作为一个重复的问题来解决。