2017-05-24 4 views
0

J'essaie de calculer la transformée de Fourier inverse d'un tableau de coefficients en utilisant ifft avec julia.Erreur lors de l'utilisation de ifft avec julia

Je N nombres complexes sur un réseau organisé comme: Y = [Y_0, .., Y_ (N-1)] reprensenting mes coefficients de Fourier et en calculant

ifft(Y) 

Je reçois le message d'erreur suivant :

MethodError: no method matching plan_bfft(::Array{Complex,1}, ::UnitRange{Int64}) Closest candidates are:
plan_bfft{T<:Union{Complex{Float32},Complex{Float64}},N}(::Union{Base.ReshapedArray{T<:Union{Complex{Float32},Complex{Float64}},N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T<:Union{Complex{Float32},Complex{Float64}},N},SubArray{T<:Union{Complex{Float32},Complex{Float64}},N,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Any; flags, timelimit) at fft/FFTW.jl:601
plan_bfft{T<:Real}(::AbstractArray{T<:Real,N}, ::Any; kws...) at dft.jl:205
plan_bfft{T<:Union{Integer,Rational{T<:Integer}}}(::AbstractArray{Complex{T<:Union{Integer,Rational}},N}, ::Any; kws...) at dft.jl:207 ...

in #plan_ifft#15(::Array{Any,1}, ::Function, ::Array{Complex,1}, ::UnitRange{Int64}) at ./dft.jl:268 in #plan_ifft#3(::Array{Any,1}, ::Function, ::Array{Complex,1}) at ./dft.jl:58 in ifft(::Array{Complex,1}) at ./dft.jl:56

Quelqu'un peut-il aider avec ceci? Quand je demande typeof(Y) la réponse est Array {Complex, 1}.

Merci

+0

Est-ce que 'IFFT (Collect (Y))' travail? – rickhg12hs

Répondre

0

Juste une supposition ici: ifft attend les éléments du tableau à être de type Complex{Float64}, pas Complex. En outre,

julia> Complex<:Complex{Float64} 
false 

Comment avez-vous obtenu un tableau de Complex?

Lorsque vous utilisez les choses fonctionnent correctement Complex{Float64}:

julia> Y=complex([1.,2.,3.],[4.,3.,2.]) 
3-element Array{Complex{Float64},1}: 
1.0+4.0im 
2.0+3.0im 
3.0+2.0im 

julia> ifft(Y) 
3-element Array{Complex{Float64},1}: 
     2.0+3.0im  
-0.788675+0.211325im 
-0.211325+0.788675im 
+0

J'initialise le tableau avec la ligne 'Array (Complex, n)'. En utilisant 'Array (Complexe {Float64}, n)' cela fonctionne bien merci. Bien que la réponse soit complexe alors que j'aurais une fonction réelle, je dois maintenant résoudre un nouveau problème. Je vous remercie! – user5035672