我不是开发人员,那么这个问题可能很荒谬。我从sum1 sum2开头的两行出现错误(请参阅以下消息)。您能告诉我是否存在语法错误吗?
//Get single constituent sinusoid on z
sx(i, k, N) =>
sum1 = ReX_(k)*cos(2*pi*k*i/N)
sum2 = ImX_(k)*sin(2*pi*k*i/N)
return = sum1+sum2
Cannot call 'anonym_function_2' with arguments (fun_arg__<anonym_function_4_arg1_type>, fun_arg__<anonym_function_4_arg2_type>, fun_arg__<anonym_function_4_arg2_type>, series[float]);
Thx
您要编写的函数必须对python解释器具有适当的缩进。第二件事是要有适当的关键字,例如def
用于函数声明,而return sum1+sum2
不是return =sum1+sum2
从函数内的a返回。
这里是正确的伪代码,可以帮助您理解代码语法。
def sx(i, k, N):
sum1 = ReX_(k)*cos(2*pi*k*i/N)
sum2 = ImX_(k)*sin(2*pi*k*i/N)
return sum1+sum2
您能否定义ReX_
和ImX_
?
不使用return sum1 + sum2:s =>不起作用,'return'在变量声明中不是有效的类型关键字
//Real part of the Frequency Domain Representation
ReX(k) =>
sum = 0.0
for i=0 to N-1
sum := sum + z[i]*cos(2*pi*k*i/N)
return = sum
//Imaginary part of the Frequency Domain Representation
ImX(k) =>
sum = 0.0
for i=0 to N-1
sum := sum + z[i]*sin(2*pi*k*i/N)
return = -sum
//Get sinusoidal amplitude from frequency domain
ReX_(k) =>
case = 0.0
if(k!=0 and k!=N/2)
case := 2*ReX(k)/N
if(k==0)
case := ReX(k)/N
if(k==N/2)
case := ReX(k)/N
return = case
//Get sinusoidal amplitude from frequency domain
ImX_(k) =>
return = -2*ImX(k)/N
//Get full Fourier Transform
x(i, N) =>
sum1 = 0.0
sum2 = 0.0
for k=0 to N/2
sum1 := sum1 + ReX_(k)*cos(2*pi*k*i/N)
for k=0 to N/2
sum2 := sum2 + ImX_(k)*sin(2*pi*k*i/N)
return = sum1+sum2