2 votos

Encuentre numéricamente la amplitud y la fase en R

Tengo que hacer una pregunta complementaria a este post:

https://stackoverflow.com/questions/1449290/algorithmically-get-amplitude-and-phase-of-sine-wave

Mi objetivo es encontrar la amplitud y la fase de alguna señal. Para una mejor comprensión ahora quiero asumir que esta señal es una simple onda sinusoidal.

El código que tengo actualmente es:

t <- seq(0, 100, length.out = 1000)
s <- sin(t)
qplot(t, s, geom = "line")

f <- fft(s)
a2 <- Mod(f/length(s))
qplot(t, a2, geom = "line")

Por lo que he entendido, el segundo gráfico visualiza ahora la transformada de Fourier de doble cara, ¿no? Entonces, ¿qué tengo que hacer para terminar con amplitude = 1 ? Al ver el segundo gráfico, ¿tendría que sumar los dos picos?

Y, con respecto a la fase. Sé que tendría que usar algo como p2 = Arg(f) Pero, ¿cómo termino con phase = 0 ?

¡Muchas gracias!

1voto

Milan Bernolak Puntos 55

La fórmula correcta de la onda sinusoidal es $$ A\cdot \sin(2\pi\cdot f\cdot t + \phi) $$ donde $A$ es la amplitud, $f$ es la frecuencia y $\phi$ es la fase.

En esta respuesta en stackoverflow mostré una función, que puede ayudarte a entender fft() mejor.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X