6 votos

Cómo ajustar una curva a una onda sinusoidal

Me pregunto cómo encajar una onda sinusoidal (aproximación). Me gustaría encajarla en la forma: $y = A \sin (Bx + C) + D$ donde $A,\,B,\,C$ y $D$ son constantes. Las únicas constantes que realmente me importan son A y B para poder obtener la amplitud y el período de tiempo

Editar:

Creo que debo aclarar Los datos que voy a ajustar serán probablemente ruidosos, así que estaba pensando que el ajuste sinusoidal podría darme una lectura más precisa de la amplitud que sólo tomar los valores máximos y mínimos de los datos en bruto

3voto

Shabaz Puntos 403

Necesita una rutina de mínimos cuadrados no lineales, disponible en cualquier libro de análisis numérico. Las versiones obsoletas de Recetas numéricas están disponibles de forma gratuita. Puedes obtener unos valores de partida bastante buenos estableciendo D como la media de todos los datos, A como el rango de los datos, y B y C de una FFT. Podría ser un poco más sencillo ampliar el seno a $A\sin(Bx)\cos C+A\cos(Bx)\sin C$ y definir $E=A\cos C, F=A\sin C$ pero no estoy seguro.

1voto

theog Puntos 585

Si sus datos abarcan un número entero de períodos, entonces puede tomar simplemente el término de Fourier con la mayor amplitud. Esto representará la onda sinusoidal que mejor se ajusta a sus datos en el sentido de los mínimos cuadrados, y puede obtener su amplitud, frecuencia y fase a partir de los coeficientes de Fourier correspondientes. Esto funciona porque la base de Fourier es ortonormal, por lo que el error al cuadrado resultante de descartar todos los términos de Fourier menos uno es proporcional a la suma de las amplitudes al cuadrado de todos los demás términos.

Si sus datos abarcan un número no entero de períodos, probablemente sea un problema más difícil. Usted podría tratar de tomar el mayor término de Fourier como una conjetura inicial y luego hacer algún tipo de optimización no lineal como en el comentario de Ross; tal vez incluso el descenso de gradiente simple podría funcionar.

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