ValueError:矩阵必须是二维的

时间:2015-06-12 09:57:39

标签: python numpy

我有以下代码来绘制gassian-2d轮廓,但是我得到了这个错误:

Traceback (most recent call last):
  File "question.py", line 15, in <module>
    Z0=gaussian_2d(X0,Y0,2,3,cov)
  File "question.py", line 4, in gaussian_2d
    return exp(-0.5*mat([x-x0,y-y0])*sigmaMatrix.I*mat([x-x0,y-y0]).T)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py", line 96, in asmatrix
    return matrix(data, dtype=dtype, copy=False)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py", line 272, in __new__
    raise ValueError("matrix must be 2-dimensional")
ValueError: matrix must be 2-dimensional

这是我的代码:

import matplotlib.pyplot as plt
from numpy import *
def gaussian_2d(x, y, x0, y0, sigmaMatrix):
    return exp(-0.5*mat([x-x0,y-y0])*sigmaMatrix.I*mat([x-x0,y-y0]).T)
cov=mat([[1,0],[0,2]])
delta=0.025
xgrid=arange(-2, 6, delta)
ygrid=arange(-2, 6, delta)
X0, Y0 = meshgrid(xgrid, ygrid)
Z0=gaussian_2d(X0,Y0,2,3,cov)

谁能告诉我这里我做错了什么?

1 个答案:

答案 0 :(得分:0)

错误从连接开始,但您的矩阵尺寸也不匹配。

您正在执行二次形式乘法x^T A x,但您的meshgrid变量是320x320的平方矩阵。你的A矩阵cov是2x2因此你得到一个错误。

如果大小匹配,您可以列连接mat(c_[x-x0,y-y0])或使用任何其他堆叠选项。