我的代码允许用户引入将使用傅里叶变换的数字数组。但是我想从一个文件中读取这个数组。我怎样才能做到这一点?我刚开始学习python ..
import cmath
from scipy.fftpack import fft
f=open("complex.txt","r+")
c=[]
for line in f:
line=line.split()
if line:
line=[complex(i.replace('i','j')) for i in line]
c.append(line)
def omega(p, q):
return cmath.exp((2.0 * cmath.pi * 1j * q) / p)
def fft(signal):
n = len(signal)
if n == 1:
return signal
else:
Feven = fft([signal[i] for i in xrange(0, n, 2)])
Fodd = fft([signal[i] for i in xrange(1, n, 2)])
combined = [0] * n
for m in xrange(n/2):
combined[m] = Feven[m] + omega(n, -m) * Fodd[m]
combined[m + n/2] = Feven[m] - omega(n, -m) * Fodd[m]
return combined
答案 0 :(得分:3)
事实证明(参见上面的评论)Mady的实际困难在于在Python中调用函数,而不是从文件中读取数据或者对文件进行傅里叶变换。所以:
要将函数f
应用于参数a
,b
,c
,您说
f(a,b,c)
如果你想把结果放在一个名为d
的变量中,你说
d = f(a,b,c)
答案 1 :(得分:2)
您的代码目前的问题是什么?你试过了吗?
for line in f:
line=line.split()
if line:
line=[complex(i.replace('i','j')) for i in line]
c.append(line)
for signal in c:
print fft(signal)