1

我的代码让用户引入将用傅立叶转换的数字数组。但我想从文件中读取这个数组。我怎样才能做到这一点?我刚开始学习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
4

2 回答 2

3

事实证明(参见上面的评论),Mady 的实际困难在于调用 Python 中的函数,而不是从文件中读取数据或对其进行傅里叶变换。所以:

要将函数f应用于参数a, b, c, 你说

f(a,b,c)

如果你想把结果放在一个名为 的变量中d,你说

d = f(a,b,c)
于 2013-05-10T12:14:51.857 回答
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)

?

于 2013-05-10T12:02:24.280 回答