Scilab fft cómo

Scilab fft cómo
Scilab es una gran herramienta para muchos usos en el trabajo científico y de ingeniería. Este artículo cubrirá el caso especial de FFT, Fast Fourier Transform.

Primero aclaremos qué es la transformación rápida de Fourier y por qué quieres usarla. Las matemáticas se trata de frecuencias. La transformación de Fourier es un método para soltar ondas más pequeñas en una onda compleja. Eso sonaba complejo; Cuando escuchas música escuchas muchas notas diferentes del cantante, instrumentos, etc. Como humanos, a menudo podemos escuchar la guitarra por sí sola, pero tratar de soltarla con la tecnología en una grabación y te tienes problemas. La tecnología moderna puede hacerlo, gracias a las diferentes encarnaciones de las ecuaciones básicas de Fourier que se desarrollaron a través de los años. Los usos modernos de la serie de Fourier son la compresión de imágenes y video, GPS e MRI. Todo esto hace una aproximación de la fuente y usa la serie Fourier para guardar la memoria y obtener resultados más rápidos.

El matemático Jean-Baptiste Joseph Fourier en realidad estaba tratando de resolver la ecuación de calor, para que sea posible calcular cómo se propaga el calor en la materia sólida. Lo que se le ocurrió fue mucho más útil que eso, aunque sus métodos se mejoraron más tarde a una versión más formal. Las ecuaciones ahora se usan en una amplia gama de campos.

Para soltar una frecuencia específica en una señal compleja, puede usar algunos cálculos, el rápido Fourier se transforma. La base matemática para esto requiere alguna práctica. Khan Academy es un buen lugar para aprender las matemáticas.

Cuando necesite analizar cualquier ola, puede usar funciones sinusoidales para aproximar la onda total y obtener todas las señales separadas de la onda mixta. O viceversa, puedes hacer una onda compleja de varias olas sinusoidales. Esta es la idea básica detrás de las matemáticas.

Para comprender mejor sus transformaciones de Fourier, una buena práctica es escribirlos usted mismo. En Scilab tienes un lenguaje de programación simple diseñado con énfasis en las matemáticas.
Las diferentes tareas que necesitará las transformaciones de Fourier comienzan con la búsqueda de los coeficientes de una transformación. La razón es que esto es lo que se usa para la compresión de imágenes y muchos otros procesos.

Cuando aprendes los conceptos básicos de la serie, lo primero que usa son los coeficientes. Las ecuaciones son así:

El código para resolverlos es bastante simple, comienza con una función. Esta función implementa la transformación de Fourier en piezas pequeñas.
Para definir una función, utiliza la construcción obvia de 'función'. A continuación se muestra una serie de Fourier para una onda cuadrada:

función y =F(Z)
y = 4*sin (t)/1*%pi + 4*sin (3*t)/3*%pi + 4*sin (5*t)/5*%pi + 4*sin (7*t) /7*%pi
+ 4*sin (9*t)/9*%pi
Función final

Para que la onda sea aún más cuadrada, es una aproximación después de todo, debe seguir aumentando el número de términos. Cuando buscas recrear un patrón, digamos una caricatura, usas la transformación de Fourier de una manera muy similar. Solo necesita considerar el período como infinito.

Derecho simple? Bueno, no sin el conocimiento matemático básico. Prueba algunos ejemplos tú mismo, usando scilab.

Este ejemplo muestra la combinación de señal más simple posible; Dos señales de diferente frecuencia.

// Elija un tamaño de muestra
N = 100;
// Establecer la secuencia, esto crea la matriz
n = 0: n-1;
// crear la frecuencia de las señales
w1 = %pi/4
w2 = %pi/8
// hacer las señales muestreadas
s1 = cos (w1*n); // El primer componente de la señal
s2 = cos (w2*n); // El segundo componente de la señal
// Combinar los dos en una señal
// En este caso hacemos una señal limpia simple.
F = S1 + S2;
// Aquí está la señal resultante lista para la transformación.
figura (0);
Parcela (f);
// La transformación de Fourier de esta señal debe mostrar solo la frecuencia de los componentes.
F = fft (f);
F_abs = ABS (f);
Figura 1);
tram (n, f_abs);
Figura 2);
Parcela (f);

Use el ejemplo anterior para practicar cómo funciona la transformación. Asegúrese de cambiarlo para filtrar de diferentes maneras.

Un consejo es usar la consola Scilab para ver qué contienen las variables en cada paso del programa, de esta manera también puede ver que 'F' tiene un contenido imaginario. Trate de cambiar äfä de otra manera para obtener un resultado más correcto.

En la industria, el uso más común de las transformaciones de Fourier es para analizar la señal. Para filtrar las frecuencias de una señal ruidosa, debe comenzar a hacer o importar una señal. El siguiente fragmento de código crea una señal mixta de dos frecuencias, 50 y 70 Hz. En el código también puede ver el uso de 'Grand', esta es la llamada Scilab a Random. Estos valores aleatorios se agregan para hacer que la señal sea un poco más ruidosa, más cerca de la realidad.

sample_rate = 1000;
t = 0: 1/sample_rate: 0.6;
N = tamaño (t, '*'); //número de muestras
s = sin (2*%pi*50*t)+sin (2*%pi*70*t+%pi/4)+grand (1, n, 'nor', 0,1);
Ahora, puede trazar 's' como una función de 't' y ver que el gráfico se ve desordenado.
>> Plot (t, s);

Aquí, es hora de probar las transformaciones más simples de Fourier, hacer de 'Y' la transformación de Fourier de S.

y = fft (s);

FFT

Si trazas 'y' como una función de 't', obtienes un patrón algo simétrico que varía de 0 a 0.6. Los dos picos son lo que estamos buscando, pero ahora los estamos viendo en el dominio del tiempo. Lo que realmente sucedió fue que el resultado todavía contenía los valores imaginarios. Para encontrar las dos frecuencias en el dominio de frecuencia, necesitamos más operaciones en el que solo busque los números reales. Y luego toma el valor absoluto de los resultados. El gráfico señala claramente las frecuencias originales.

Aquí está el código:

// s es real, por lo que la respuesta FFT es simétrica conjugada y solo conservamos el primero
N/2 puntos
f = sample_rate*(0: (n/2))/n; // Vector de frecuencia asociado
n = tamaño (f, '*')
CLF ()
Parcela (F, Absy (1: N)))

Este es el uso más común de la transformación de Fourier. Usando este sistema, puede encontrar cualquier frecuencia en una señal compleja y ruidosa. Las ecuaciones se usan ampliamente en muchas industrias hoy en día.
La función fft2 de scilab es la versión bidimensional de la transformación rápida de Fourier.

Una excelente manera de practicar es elegir los tonos DTMF, crear un botón Presione y hacer que Scilab descubra la tecla correcta.

Las demostraciones en Scilab en sí contienen un escaparate de archivos de sonido, estudiarlo.

Si desea profundizar, aquí hay algunos enlaces para leer más.

Literatura avanzada:

https: // cnx.org/contenidos/ULXTQBN7@15/Implementación-FFTS-In-Practice#UID8

Wolfram ..

http: // demostraciones.Wolfram.com/ComplexAndrealPlanesOfDIScreteFourierTransforms/

Implementación en otros idiomas:

https: // www.nayuki.IO/Page/How-To-Implement-the-Discrete-Fourier-Transform

Para obtener la sensación correcta del tema:

https: // BetterExplaned.com/artículos/an-interactivo-guía-to-the-fourier-transform/