Matemáticas

CÓMO de Scilab FFT

CÓMO de Scilab FFT
Scilab es una gran herramienta para muchos usos tanto en trabajos científicos como de ingeniería. Este artículo cubrirá el caso especial de FFT, Fast Fourier Transform.

Primero, aclaremos qué es la Transformada de Fourier rápida y por qué desea usarla. Las matemáticas se tratan de frecuencias. La transformada de Fourier es un método para distinguir 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 seres humanos, a menudo podemos escuchar la guitarra por sí sola, pero si intentamos distinguirla con tecnología en una grabación, nos encontramos con problemas. La tecnología moderna puede hacerlo, gracias a las diferentes encarnaciones de las ecuaciones básicas de Fourier que se desarrollaron a lo largo de los años. Los usos modernos de la serie Fourier son la compresión de imágenes y video, los escáneres GPS y MRI. Todo esto hace una aproximación de la fuente y utiliza la serie de Fourier para ahorrar memoria y obtener resultados más rápidos.

El matemático Jean-Baptiste Joseph Fourier estaba tratando de resolver la ecuación del calor para poder 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 utilizan en una amplia gama de campos.

Para seleccionar una frecuencia específica en una señal compleja, puede utilizar algunos cálculos, las transformadas rápidas de Fourier. La base matemática para esto requiere algo de práctica. Khan Academy es un buen lugar para aprender matemáticas.

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

Para comprender mejor sus transformadas de Fourier, una buena práctica es escribirlas usted mismo. En Scilab tienes un lenguaje de programación sencillo diseñado con énfasis en matemáticas.
Las diferentes tareas que necesitará Las transformadas de Fourier comienzan con la búsqueda de los coeficientes de una transformada. 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 se 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 Transformada de Fourier en pequeñas piezas.
Para definir una función, usa 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 hacer la onda aún más cuadrada, es una aproximación después de todo, necesitas seguir aumentando el número de términos. Cuando busca recrear un patrón, digamos una caricatura, usa la transformada de Fourier de una manera muy similar. Solo necesitas considerar el período como infinito.

Derecho simple? Bueno, no sin los conocimientos básicos de matemáticas. Pruebe algunos ejemplos usted mismo, usando scilab.

Este ejemplo muestra la combinación de señales 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;
 
// Crea 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
 
// Combina los dos en una sola señal
// En este caso hacemos una señal limpia simple.
 
f = s1 + s2;
 
// Aquí está la señal resultante lista para transformar.
 
figura (0);
parcela (f);
 
// La transformada de Fourier de esta señal debe mostrar solo la frecuencia de los componentes.
 
F = fft (f);
 
F_abs = abs (F);
 
Figura 1);
plot (n, F_abs);
 
Figura 2);
trama (F);

Utilice 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 puedes ver que 'F' tiene un contenido imaginario. Intente cambiar äfä de otra manera para obtener un resultado más correcto.

En la industria, el uso más común de las transformadas de Fourier es para analizar señales. Para filtrar las frecuencias de una señal ruidosa, debe comenzar con la creación o la importación de 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 de scilab a random. Estos valores aleatorios se agregan para hacer que la señal sea un poco más ruidosa, más cercana a 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.
>> trama (t, s);

Aquí, es hora de probar la más simple de las transformadas de Fourier, hacer 'y' la transformada de Fourier de s.

y = fft (s);

fft

Si traza 'y' en función de 't', obtiene un patrón algo simétrico que va 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 aún contenía los valores imaginarios. Para encontrar las dos frecuencias en el dominio de la frecuencia, necesitamos algunas operaciones más para encontrar solo los números reales. Y luego tomas 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 retenemos solo la primera
N / 2 puntos
f = tasa_muestra * (0: (N / 2)) / N; // vector de frecuencia asociado
n = tamaño (f, '*')
clf ()
trama (f, absy (1: n)))

Este es el uso más común de la transformada de Fourier. Con este sistema puede encontrar cualquier frecuencia en una señal compleja y ruidosa. Las ecuaciones se utilizan ampliamente en muchas industrias en la actualidad.
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, presionar un botón y hacer que scilab descubra la clave correcta.

Las demostraciones en Scilab en sí contienen un escaparate de archivos de sonido, estúdialo.

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

Literatura avanzada:

https: // cnx.org / contents / [email protected] / Implementing-FFTs-in-Practice # uid8

Wolfram ..

http: // demostraciones.wolfram.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Implementando en otros idiomas:

https: // www.nayuki.io / page / cómo-implementar-la-transformada-discreta-de-Fourier

Para tener la sensación correcta del sujeto:

https: // mejor explicado.com / articles / an-interactive-guide-to-the-fourier-transform /

Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...
Vuelva a asignar los botones del mouse de manera diferente para diferentes programas con X-Mouse Button Control
Tal vez necesite una herramienta que pueda hacer que el control de su mouse cambie con cada aplicación que use. Si este es el caso, puede probar una a...
Revisión del mouse inalámbrico Microsoft Sculpt Touch
Recientemente leí sobre el Microsoft Sculpt Touch mouse inalámbrico y decidí comprarlo. Después de usarlo por un tiempo, decidí compartir mi experienc...