我想绘制1/(1+(i)(omega)(tau))
幅度与频率f
的关系图,其中i
是虚数,omega=(2)(pi)(f)
,tau
是不变。以下是代码的第一部分:
import pylab as pl
import numpy as np
f=np.logspace(-2,4,10)
tau=1.0
omega=2*np.pi*f
y=np.complex(1,omega*tau)
print y
但是我得到了TypeError: only length-1 arrays can be converted to Python scalars
。有什么问题?为什么我不能将f
(这是一个数组对吗?)放到y
?顺便说一下,我正在使用enthought canopy
。
还有一个问题: pylab
和matplotlib
之间有什么区别?不同的模块?如果我只是绘制图形,处理复数和矩阵,我应该使用哪一个?
答案 0 :(得分:3)
您无法使用np.complex
构建numpy数组。在python中,当你将一个j
放在一个数字之后,它会让它成为虚构的。因此,制作复杂的数组只需:
y = 1 + omega * tau * 1j
答案 1 :(得分:1)
这是必须使用np.vectorize
的情况。也就是说,
def main():
f = np.logspace(-2,4,10)
print(f)
tau=1.0
omega=2*np.pi*f
y=np.vectorize(complex)(1,omega*tau)
print (y)
,将首先返回:
[ 1.00000000e-02 4.64158883e-02 2.15443469e-01 1.00000000e+00
4.64158883e+00 2.15443469e+01 1.00000000e+02 4.64158883e+02
2.15443469e+03 1.00000000e+04]
然后返回:
[ 1. +6.28318531e-02j 1. +2.91639628e-01j 1. +1.35367124e+00j
1. +6.28318531e+00j 1. +2.91639628e+01j 1. +1.35367124e+02j
1. +6.28318531e+02j 1. +2.91639628e+03j 1. +1.35367124e+04j
1. +6.28318531e+04j]