我有以下问题。我想评估以下功能

def sigLinZ(self,val,omega):
    A = 1
    C = 0
    D = 1

    B =1./(omega*val*1j)

    return np.asmatrix(np.array([[A,B],[C,D]]))

以这样的方式,我可以在pyplot中使用它:
omega = numpy.arange(0,100,1)
y = classInstance.sigLinZ(12,omega)
plt.plot(omega,y)

但这不管用。蟒蛇说:
Traceback (most recent call last):


File "testImpedanz.py", line 132, in test6_lineImpedanz
    print "neue Matrix: ",  lineImpe.sigLinZ('C',lineImpe.C(),np.array([600e6,300e6]))
  File "/afs/physnet.uni-hamburg.de/users/ap_h/pgwozdz/Dokumente/PythonSkriptsPHD/ImpedanzCalculation.py", line 350, in sigLinZ
    return np.mat(np.array([[A,B],[C,D]]))
TypeError: only length-1 arrays can be converted to Python scalars

我知道对于numpy函数,这个过程工作得很好,但是对于我的函数,它根本不工作。

最佳答案

您正试图将数组插入传递给方法的omega定义中的矩阵元素中。要么需要遍历omega分别将每个元素传递给sigLinZ,要么需要重新编写sigLinZ来处理数组并返回类似于矩阵列表或3D数组的内容。

关于python - python matplotlib.pyplot和numpy问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18593224/

10-12 13:29