Python 计算傅里叶变换,但总是得到一个类型错误
我有一个函数f(t),表示振幅为1、频率为1 Hz的方波,我被要求编写一个程序,c创建一个包含1000个元素的数组,其中包含来自所述方波单个周期的1000个等距样本,并计算数组的傅里叶变换。所以我写了这段代码,但总是出错。有人能帮我修一下吗Python 计算傅里叶变换,但总是得到一个类型错误,python,arrays,python-3.x,numpy,python-3.6,Python,Arrays,Python 3.x,Numpy,Python 3.6,我有一个函数f(t),表示振幅为1、频率为1 Hz的方波,我被要求编写一个程序,c创建一个包含1000个元素的数组,其中包含来自所述方波单个周期的1000个等距样本,并计算数组的傅里叶变换。所以我写了这段代码,但总是出错。有人能帮我修一下吗 from math import trunc, linspace from numpy.fft import rfft, irfft from pylab import plot, show def f(t): if trunc(2*t) %
from math import trunc, linspace
from numpy.fft import rfft, irfft
from pylab import plot, show
def f(t):
if trunc(2*t) % 2 == 0:
return 1
else:
return -1
N = linspace(0,1,1000)
y = map(f,N)
c = rfft(y)
plot(y)
我得到的错误是:
TypeError: float() argument must be a string or a number, not 'map'
您的代码中有2个错误:
从numpy导入linspace
缺失map
返回迭代器而不是列表。您需要使用y=list(map(f,N))
from math import trunc
from numpy import linspace
from numpy.fft import rfft, irfft
from pylab import plot, show
def f(t):
if trunc(2*t) % 2 == 0:
return 1
else:
return -1
N = linspace(0,1,1000)
y = list(map(f,N))
c = rfft(y)
对于
y
作为数组,您可以使用y=np.array(list(map(f,N)))
您需要提供完整的错误…您真正想要的是什么?如果这是完整的代码,错误是name错误:未定义名称“linspace”
。问题是什么以及如何解决,这难道不是显而易见的吗?(将numpy import linspace的行添加到顶部附近。)当然,当您修复该错误时,会弹出另一行。阅读错误消息并对其采取行动。您有什么特别的地方不明白吗?很抱歉,我在这里输入问题时忘了包含linspace。弹出的错误是TypeError:float()参数必须是字符串或数字,而不是“map”,现在您得到了另一个错误。函数linspace
不在尝试导入它的math
模块中,而是在numpy
模块中。非常感谢您的帮助!