我用下面这个小的m-file
在Matlab
中绘制了一个3D网格:
[x,n] = meshgrid(0:0.1:20, 1:1:100);
mu = 0;
sigma = sqrt(2)./n;
f = normcdf(x,mu,sigma);
mesh(x,n,f);
我将通过使用Python
及其相应的模块,使用以下代码段来获得相同的结果:
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt
sigma = 1
def integrand(x, n):
return (n/(2*sigma*np.sqrt(np.pi)))*np.exp(-(n**2*x**2)/(4*sigma**2))
tt = np.linspace(0, 20, 2000)
nn = np.linspace(1, 100, 100)
T = np.zeros([len(tt), len(nn)])
for i,t in enumerate(tt):
for j,n in enumerate(nn):
T[i, j], _ = quad(integrand, -np.inf, t, args=(n,))
x, y = np.mgrid[0:20:0.01, 1:101:1]
plt.pcolormesh(x, y, T)
plt.show()
但是Python的输出与Matlab的输出相比有很大的不同,事实上是无法接受的。我担心会出现函数误用,就像linespace、enumerate或mgrid一样...
有没有人有什么想法?...
PS:不幸的是,我不能在这个帖子中插入输出图形...!
最好
tt = np.linspace(0, 19, 20)
看起来应该是201而不是19吗? - Brian L