我必须在球形极坐标图中绘制天线响应模式。
我首先创建theta(t
)和phi(p
)值。然后,必须为每个theta[i]
和phi[i]
计算F_c和F_s。
t=np.linspace(-math.pi/2, math.pi/2, num=x)
p=np.linspace(-math.pi, math.pi, num=x)
for k in xrange(x):
for j in xrange(x):
for i in xrange(n):
F_c=F_c_F_s.F_c(theta[i],phi[i],t[j],p[k])
F_s=F_c_F_s.F_s(theta[i],phi[i],t[j],p[k])
sum_F_c[j][k]=sum_F_c[j][k]+F_c
sum_F_s[j][k]=sum_F_s[j][k]+F_s
mod_F[j][k]=math.log((math.pow(sum_F_c[j][k],2)+math.pow(sum_F_s[j][k],2)),10)
现在,每个mod_F
和t
的值为p
。对于θ的每个值并且相应地对于phi的每个值,我计算笛卡尔坐标。然后,为了制作表面图,我有以下内容:
fig = p.figure()
ax = Axes3D(fig)
ax.plot_wireframe(x,y,z)
ax.plot_surface(x,y,z,rstride=1,cstride=1,cmap=cm.jet)
p.show()
问题是,它非常慢!即使对于x=10
,即10 x 10网格,也需要花费很多时间。有没有办法以更好更快的方式做到这一点?
答案 0 :(得分:0)
以下为我工作:
t=np.linspace(0, np.pi, num=x)
p=np.linspace(-np.pi,np.pi,num=x)
[T,P]=np.meshgrid(t,p)
F_c=0.0
F_s=0.0
for i in xrange(n):
F_c+=F_c_F_s.F_c(theta[i],phi[i],T,P)
F_s+=F_c_F_s.F_s(theta[i],phi[i],T,P)
mod_F=(np.log10((np.power(F_c,2)+np.power(F_s,2))))