2015-02-05 2 views
0

내가 푸리에 목록으로 변환 역을하려고하고, 어떤 이유로 나는 다음과 같은 오류IFFT 기능은 '오류

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "simulating_coherent_data.py", line 238, in <module> 
    exec('ift%s = np.fft.ifft(nd.array(FTxSQRT_PS%s))'(x,x)) 
TypeError: 'str' object is not callable 

가 계속 "'STR '객체는 호출하지 않습니다"내가 할 수 있습니다 내가 어디에서 끈이 있는지 알아 낸다. 관련 코드의 내용은 다음과 같습니다.

def FTxSQRT_PS(FT,PS): 
# Import: The Fourier Transform and the Power Spectrum, both as lists 
# Export: The result of FTxsqrt(PS), as a list 
# Function: 
#  Takes each element in the FT and PS and finds FTxsqrt(PS) for each 
#  appends each results to a list called signal 
    signal = [] 
    print type(PS) 
    for x in range(len(FT)): 
     indiv_signal = np.abs(FT[x])*math.sqrt(PS[x]) 
     signal.append(indiv_signal) 
    return signal 

for x in range(1,number_timesteps+1): 
    exec('FTxSQRT_PS%s = FTxSQRT_PS(fshift%s,power_spectrum%s)'%(x,x,x)) 
    exec('ift%s = np.fft.ifft(FTxSQRT_PS%s)'(x,x)) 

여기서 FTxSQRT_PS % s는 모두 목록입니다. fshift % s은 np.array이고 power_spectrum % s은 목록입니다. 또한 np.array로 FTxSQRT_PS % s의 유형을 설정해 보았습니다.하지만 도움이되지 않았습니다. 나는 매우 유사한 코드를 몇 줄까지 잘 작동한다; 소스 % s의 모든 유형이다

for x in range(1,number_timesteps+1): 
    exec('fft%s = np.fft.fft(source%s)'%(x,x)) 

np.array

내가 생각할 수있는 유일한 것은 어쩌면 np.fft.ifft 어떻게 역을 복용해야되지 않은 것은 푸리에 파이썬 2.7 변환이다 .6 그러나 나는 대안을 찾을 수 없다.

전체 코드를보고 싶다면 문제가있는 곳까지 약 240 줄이 있지만 그 중 많은 부분이 댓글을 달았습니다. 어떤 도움

감사합니다,

테레사

+0

좋아, 나는 그것이 뭔가 있음을 일했다 사실 나는 ift1 = np.fft.ifft (FTxSQRT_PS1)를 입력 할 때 여러 ift를 생성하려고합니다. nto terminal 문제없이 .. % s % x 및/또는 exec 항목을 좋아하지 않습니다. – user1153070

답변

1

당신이 누락되는 %

exec('ift%s = np.fft.ifft(FTxSQRT_PS%s)'(x,x)) 

해야합니다

exec('ift%s = np.fft.ifft(FTxSQRT_PS%s)'%(x,x)) 
+0

감사합니다. 나는 얼마나 오랫동안 내가 보지 않고 내 코드를 쳐다 보았다고 믿을 수 없다 !! – user1153070