【Matlab】对ndgrid的理解
最近画图用到了ndgrid,刚开始不是很理解ndgrid的原理,再看了一些博客以后对ndgrid有了一些认识,下面浅谈一下ndgrid的用法和原理。
用法
生成矩阵网格
[X1,X2,…,Xn] = ndgrid(x1,x2,…,xn)
x1,x2,…,xn是网格向量。
示例
如果x1是长度为n 的向量, x2是长度为m的向量。
则生成的X1是 n × m n\times m n×m 的矩阵,X2也是 n × m n\times m n×m的矩阵。
ex:
x=[1 2 3 4 5 6 7 8];
y=[1 2 3];
[X,Y] = ndgrid(x,y);
可以看到生成的矩阵X Y如下,
X =
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
Y =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
理解
为什么需要生成这样的矩阵网格呢,以下是我的一点点理解。
如果我们需要画某些多元函数的概率密度图像,以三维的dirichlet distribution为例
f ( x 1 , x 2 , x 3 ) = Γ ( α 1 + α 2 + α 3 ) ∏ i = 1 3 Γ ( α i ) x 1 α 1 − 1 x 2 α 2 − 1 x 3 α 3 − 1 f (x_1,x_2,x_3)= \frac{\Gamma(\alpha_{1}+\alpha_{2}+\alpha_{3})}{\prod_{i=1}^{3}\Gamma(\alpha_{i})}x_{1}^{\alpha_{1}-1}x_{2}^{\alpha_{2-1}}x_{3}^{\alpha_{3-1}} f(x1,x2,x3)=∏i=13Γ(αi)Γ(α1+α2+α3)x1