我已经使用Matlab几年了,这是相当容易(在我看来)和强大的三维图形,如surf,contour或contourf。在我看来,用Python做同样的事情至少更不直观。
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0,100,0.1) # time domain
sp = np.arange(0,50,0.2) # spatial domain
c = 0.5
u0 = np.exp(-(sp-5)**2)
u = np.empty((len(t),len(sp))
for i in range(0,len(t)):
u[i][:] = u0*(sp-c*t)
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.plot_surface(t,sp,u)
plt.show()所以,在Matlab中,我认为这是很容易的。我要做什么才能得到一个三维图(表面或任何东西),对于不同尺寸的x和y维有两个数组,以及给每个网格点一个值的z矩阵?
因为这是一个基本的问题,请多解释一下,或者给我一个答案的链接。不幸的是,到目前为止,我并不真正理解我所读到的关于这个问题的代码中发生了什么。
发布于 2017-10-06 13:45:33
我不认为你所写的在matlab中也会起作用(我可能错了,我已经有一段时间没有使用它了)。
要执行plot_surface(X, Y, Z),X, Y, Z必须是大小相同的2D数组。所以,就像在matlab中所做的那样:
T, SP = numpy.meshgrid(t, sp)
plot_surface(T, SP, u)https://stackoverflow.com/questions/46607106
复制相似问题