Fourier-Transformation
-
- Beiträge: 4
- Registriert: Do Sep 24, 2020 6:20 pm
Fourier-Transformation
Ich muss von einer gegebenen Funktion die Fourier-Transformation berechnen (Genau genommen die Fourier-Rücktransformation, aber das ist ja quasi das gleiche). Meine Versuche diesbezüglich sind jedoch alle gescheitert. Hat jemand einen Vorschlag für mich, wie ich das am besten umsetzen kann? Dafür wäre ich sehr dankbar.
Re: Fourier-Transformation
Hallo Uemlaeuetmaenn,
willkommen im Forum!
Wenn Du dies im Sinne der Analysis (mathematisches Teilgebiet) meinst, dann hat dies nichts mit R zu tun.
Falls es etwas mit R zu tun hat, liefere uns bitte entsprechendes Futter (Daten und Code).
Gruß, Jörg
willkommen im Forum!
Wenn Du dies im Sinne der Analysis (mathematisches Teilgebiet) meinst, dann hat dies nichts mit R zu tun.
Falls es etwas mit R zu tun hat, liefere uns bitte entsprechendes Futter (Daten und Code).
Gruß, Jörg
-
- Beiträge: 4
- Registriert: Do Sep 24, 2020 6:20 pm
Re: Fourier-Transformation
Hallo Jörg,
ich weiß wie in der Theorie eine Fourier-Transformation und eine Fourier-Rücktransformation funktionieren. Meine konkrete Fourier-Transformierte ist nur leider ein konvergentes unendliches Produkt. Daher kann ich das Integral, das in der Berechnung der entsprechenden Rücktransformationsformel auftaucht, nicht exakt analytisch berechnen. Daher approximiere ich meine Foruieretransformierte mit 1.500 Faktoren. Auf diese Approximation möchte ich nun die Fourier-Rücktransformationsformel werfen, um eine Approximation der gesuchten Funktion zu bekommen. Hier ist mein Code dazu:
ich weiß wie in der Theorie eine Fourier-Transformation und eine Fourier-Rücktransformation funktionieren. Meine konkrete Fourier-Transformierte ist nur leider ein konvergentes unendliches Produkt. Daher kann ich das Integral, das in der Berechnung der entsprechenden Rücktransformationsformel auftaucht, nicht exakt analytisch berechnen. Daher approximiere ich meine Foruieretransformierte mit 1.500 Faktoren. Auf diese Approximation möchte ich nun die Fourier-Rücktransformationsformel werfen, um eine Approximation der gesuchten Funktion zu bekommen. Hier ist mein Code dazu:
Code: Alles auswählen
phi_fourier <- function(x)
{
product=1
for(count in 1:1500)
{product = product*m_0(x/(2**count))}
return(product)
} %Dieser Teil scheint noch zu funktionieren soweit ich das erkennen kann. Ich kann diese Funktion plotten.
phi <- function(x)
{
z <- 1/sqrt(2*pi)*myintegrate(function(t){y <- exp(1i*t*x)*phi_fourier(t); return(y)},lower=-Inf,upper=Inf)
return(z)
} % Dieser Code selbst gibt mir noch keine Fehlermeldung. Diese bekomme ich aber, wenn ich versuche die Funktion zu plotten.
Re: Fourier-Transformation
Hallo Uemlaeuetmaenn,
Auch die Definition der Funktion m_0() hast Du nicht mitgeliefert.
Wenn die Funktion m_0() mit Vektoren gut umgehen kann, dann kannst Du die Funktion phi_fourier() auch so definieren
Gruß, Jörg
Was verbirgt sich hinter der Funktion myintegrate(). Ohne diese Funktion ist Dein Code nicht reproduzierbar.Hier ist mein Code dazu: ...
Auch die Definition der Funktion m_0() hast Du nicht mitgeliefert.
Wenn die Funktion m_0() mit Vektoren gut umgehen kann, dann kannst Du die Funktion phi_fourier() auch so definieren
Code: Alles auswählen
phi_fourier <- function(x)
{
count <- -(1:1500)
prod(m_0(x^count))
}
Kannst Du bitte auch zeigen, wie Dein Code für das Plotten aussieht (... Du weißt ... wegen der Reproduzierbarkeit)?% Dieser Code selbst gibt mir noch keine Fehlermeldung. Diese bekomme ich aber, wenn ich versuche die Funktion zu plotten.
Gruß, Jörg
-
- Beiträge: 4
- Registriert: Do Sep 24, 2020 6:20 pm
Re: Fourier-Transformation
Hallo Jörg,
das mit myintegrate wollte ich eigentlich noch schreiben, habs dann aber vergessen. Die Funktion ist aus dem package"elliptic". Ich habe sie statt "integrate" verwendet, weil ein Freund meinte "integrate" kommt nicht mit komplexwertigen Funktionen klar, "myintegrate" dagegen schon.
Hier der restliche Code.
Mit freundlichen Grüßen,
Uemlaeuetmaenn
das mit myintegrate wollte ich eigentlich noch schreiben, habs dann aber vergessen. Die Funktion ist aus dem package"elliptic". Ich habe sie statt "integrate" verwendet, weil ein Freund meinte "integrate" kommt nicht mit komplexwertigen Funktionen klar, "myintegrate" dagegen schon.
Hier der restliche Code.
Code: Alles auswählen
function(x)
{z <- 1/sqrt(2)*(0.482963*exp(-1i*1*x)+0.836516*exp(-1i*2*x)+0.224144*exp(-1i*3*x)-0.12941*exp(-1i*4*x));
return(z)}
plot(phi)
Uemlaeuetmaenn
Re: Fourier-Transformation
Hallo Uemlaeuetmaenn,
... und es ist wahr, integrate() kann nicht mit komplexwertigen Funktionen umgehen:
https://stackoverflow.com/questions/383 ... wrong-type
Mein Versuch einer Lösung mit Vectorize() erzeugt im ersten Anlauf auch einen Fehler:
weitere Infos zu diesem Fehler gibt es hier:
https://stackoverflow.com/questions/239 ... ns-reached
Gruß, Jörg
Code: Alles auswählen
library("elliptic")
m_0 <- function(x) {
1/sqrt(2)*(0.482963*exp(-1i*1*x)+0.836516*exp(-1i*2*x)+0.224144*exp(-1i*3*x)-0.12941*exp(-1i*4*x))
# return(z)
}
phi_fourier <- function(x) {
product=1
for(count in 1:1500) product = product*m_0(x/(2**count))
return(product)
} # Dieser Teil scheint noch zu funktionieren soweit ich das erkennen kann. Ich kann diese Funktion plotten.
plot(phi_fourier)
x <- seq(0, 1, .02)
y <- phi_fourier(x)
plot(x, Re(y), type="l")
phi <- function(x) {
z <- 1/sqrt(2*pi) *
myintegrate(function(t) {y <- exp(1i*t*x)*phi_fourier(t); return(y)},lower=-Inf,upper=Inf)
return(z)
}
# Dieser Code selbst gibt mir noch keine Fehlermeldung.
# Diese bekomme ich aber, wenn ich versuche die Funktion zu plotten.
plot(phi) # error, weil plot() einen Vektor an die Funktion schickt
# so geht es:
x <- seq(0, 1, .02)
y <- sapply(x, phi)
plot(x, Re(y), type="l")
https://stackoverflow.com/questions/383 ... wrong-type
Mein Versuch einer Lösung mit Vectorize() erzeugt im ersten Anlauf auch einen Fehler:
Code: Alles auswählen
plot(Vectorize(phi)) # error: maximum number of subdivisions reached
https://stackoverflow.com/questions/239 ... ns-reached
Gruß, Jörg
-
- Beiträge: 4
- Registriert: Do Sep 24, 2020 6:20 pm
Re: Fourier-Transformation
Ok vielen Dank Jörg,
wenn ich das richtig verstehe lag das Problem tatsächlich "nur" im Plotten der Funktion (was ich eigentlich nur machen wollte, um zu sehen, ob der Rest geklappt hat)!? Ich kann also mit dem Rest weiterarbeiten!?
Liebe Grüße,
Ümläütmänn
wenn ich das richtig verstehe lag das Problem tatsächlich "nur" im Plotten der Funktion (was ich eigentlich nur machen wollte, um zu sehen, ob der Rest geklappt hat)!? Ich kann also mit dem Rest weiterarbeiten!?
Liebe Grüße,
Ümläütmänn
Re: Fourier-Transformation
Hallo Ümläütmänn,
(also solcher Funktionen, die augelegt wurden, um nur eine einzelne Zahl zu verarbeiten, und mit einem Vektor nicht zurecht kommen)
Gruß, Jörg
im Prinzip schon. Gelegentlich muss Du Dir des Problems der nichtvektorisierten Funktionen bewusst sein.Uemlaeuetmaenn hat geschrieben: ↑Mo Sep 28, 2020 12:38 pm wenn ich das richtig verstehe lag das Problem tatsächlich "nur" im Plotten der Funktion (was ich eigentlich nur machen wollte, um zu sehen, ob der Rest geklappt hat)!? Ich kann also mit dem Rest weiterarbeiten!?
(also solcher Funktionen, die augelegt wurden, um nur eine einzelne Zahl zu verarbeiten, und mit einem Vektor nicht zurecht kommen)
Gruß, Jörg