[英]Contour with Z(X,Y)
我有
from pylab import *
###FUNCTIONS##
def LOSS(y0,y1):
return sum(abs(y0-y1))
def genuchten(t,C,k):
return 1/(1+(C/t)**k)**(1-1/k)
###MAIN#######
if __name__ == '__main__':
t0 = linspace(0,10,100)
f0 = genuchten(t0,3,3)
x = linspace(1,10,10)
y = linspace(1,10,10)
X,Y = meshgrid(x,y)
Z = zeros(shape(X))
for i in range(len(x)):
for j in range(len(y)):
f = genuchten(t0,X[i][j],Y[i][j])
Z[i][j] = LOSS(f0,f)
contourf(X,Y,Z)
show()
這可行,但是我覺得必須有更直接的方法。 看來MATLAB具有自動執行此功能的ARRAYFUN函數?
您可以使用ndarray的廣播非常快速地計算出這一點:
from pylab import *
def genuchten(t,C,k):
return 1/(1+(C/t)**k)**(1-1/k)
###MAIN#######
t0, Y, X = ogrid[0:10:100j, 1:10:10j, 1:10:10j]
f0 = genuchten(t0, 3, 3)
f = genuchten(t0, X, Y)
Z = sum(abs(f0-f), axis=0)
contourf(X.ravel(), Y.ravel(), Z)
show()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.