为什么这段代码
def fun(t1,t):
v = np.array([t,t1])
M = np.matrix([[0,0],[0,0]])
a = np.dot(scipy.linalg.expm(M, q=0),v)
return a[0]
x = np.linspace(0,10,201)
y = np.linspace(10,0,201)
X,Y = np.meshgrid(x, y)
im = pl.imshow(fun(X,Y),cmap=cm.RdBu)
show()
给我错误“ValueError:对象未对齐”?
我试图将我的矢量写为v= np.array([[t],[t1]])
,但这也没有帮助。我做错了什么?
谢谢!
答案 0 :(得分:2)
看起来像这里
a = np.dot(scipy.linalg.expm(M1, q=0),v)
你试图在具有不兼容尺寸的两个阵列之间获取点积 在此之前
a = np.dot(scipy.linalg.expm(M1, q=0),v)
变量v
的大小
v.shape
Out[16]: (2, 201, 201)
矩阵M
M.shape
Out[18]: (2, 2)
此外,您在M1
行中使用了未定义的变量np.dot
。
答案 1 :(得分:1)
为了克服错误,我将代码重写为:
def corrm(t1,t):
v = np.array([t1,t])
M = np.matrix([[0,0],[0,0]])
a = np.dot(sw.expm(M, q=0),v)
return a[0]
points = 50
k = []
x = np.linspace(-3.0,3.0,points)
y = np.linspace(-3.0,3.0,points)
for i in x:
for j in y:
k.append([corrm(i,j)])
k = np.reshape(k,(points,points))
X,Y = meshgrid(x, y) # grid of point
imshow(k,cmap=cm.RdBu)
show()
现在有效! 谢谢你的帮助。