Scilab fft howto

Scilab fft howto
Scilab est un excellent outil pour de nombreuses utilisations dans le travail scientifique et d'ingénierie. Cet article couvrira le cas spécial de FFT, Transforment Fast Fourier rapide.

Clarifions d'abord ce qu'est la transformée de Fourier rapide et pourquoi vous voulez l'utiliser. Les mathématiques sont des fréquences. La transformée de Fourier est une méthode pour distinguer les vagues plus petites dans une vague complexe. Cela semblait complexe; Lorsque vous écoutez de la musique, vous entendez de nombreuses notes différentes du chanteur, des instruments et ainsi de suite. En tant qu'êtres humains, nous pouvons souvent entendre la guitare en soi, mais essayez de le séparer avec la technologie dans un enregistrement et vous rencontrez des ennuis. La technologie moderne peut le faire, grâce aux différentes incarnations des équations de Fourier de base qui ont été développées au fil des ans. Les utilisations modernes de la série Fourier sont la compression d'images et de vidéos, les GPS et les analyses d'IRM. Tout cela fait une approximation de la source Source et utilise des séries Fourier pour enregistrer la mémoire et obtenir des résultats plus rapides.

Le mathématicien Jean-Baptiste Joseph Fourier essayait en fait de résoudre l'équation thermique, pour permettre de calculer comment la chaleur se propage en matière solide. Ce qu'il a inventé était beaucoup plus utile que cela, bien que ses méthodes aient ensuite été améliorées à une version plus formelle. Les équations sont maintenant utilisées dans un large éventail de champs.

Pour distinguer une fréquence spécifique dans un signal complexe, vous pouvez utiliser certains calculs, le Fourier rapide se transforme. Le fondement mathématique de cela prend une certaine pratique. Khan Academy est un endroit agréable pour apprendre les mathématiques.

Lorsque vous devez analyser les vagues, vous pouvez utiliser des fonctions sinusoïdales pour approximer l'onde totale et obtenir tous les signaux séparés de l'onde mixte. Ou vice versa, vous pouvez faire une vague complexe à partir de plusieurs vagues sinusoïdales. C'est l'idée de base derrière les mathématiques.

Pour comprendre que votre Fourier se transforme mieux, une bonne pratique est de les écrire vous-même. Dans Scilab, vous avez un langage de programmation simple conçu en mettant l'accent sur les mathématiques.
Les différentes tâches dont vous aurez besoin de transformations de Fourier commencent par trouver les coefficients d'une transformation. La raison en est que c'est ce qui est utilisé pour la compression des images et de nombreux autres processus.

Lorsque vous apprenez les bases de la série, la première chose qui utilise est les coefficients. Les équations sont comme ceci:

Le code pour les résoudre est assez simple, il commence par une fonction. Cette fonction implémente la transformée de Fourier en petits morceaux.
Pour définir une fonction, vous utilisez la construction de «fonction» évidente. Vous trouverez ci-dessous une série de Fourier pour une vague carrée:

fonction 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
finition de fin

Pour rendre la vague encore plus carrée, c'est une approximation après tout, vous devez continuer à augmenter le nombre de termes. Lorsque vous cherchez à recréer un modèle, dites un dessin animé, vous utilisez la transformée de Fourier de manière très similaire. Il vous suffit de considérer la période comme infinie.

Droit simple? Eh bien, non sans les connaissances mathématiques de base. Essayez vous-même quelques exemples, en utilisant le scilab.

Cet exemple montre la combinaison de signaux la plus simple possible; Deux signaux de fréquence différente.

// Choisissez une taille d'échantillon
N = 100;
// Définit la séquence, cela crée le tableau
n = 0: n-1;
// Créer la fréquence des signaux
w1 =% pi / 4
w2 =% pi / 8
// fait les signaux échantillonnés
s1 = cos (w1 * n); // le premier composant du signal
s2 = cos (w2 * n); // le deuxième composant du signal
// combine les deux en un seul signal
// Dans ce cas, nous faisons un simple signal propre.
f = s1 + s2;
// Voici le signal résultant prêt pour la transformation.
Figure (0);
tracé (f);
// La transformée de Fourier de ce signal ne devrait montrer que la fréquence des composants.
F = fft (f);
F_abs = abs (f);
Figure 1);
tracé (n, f_abs);
Figure 2);
tracé (f);

Utilisez l'exemple ci-dessus pour pratiquer le fonctionnement de la transformation. Assurez-vous de le changer pour filtrer de différentes manières.

Une astuce consiste à utiliser la console scilab pour voir ce que les variables contiennent à chaque étape du programme, de cette façon, vous pouvez également voir que «F» a un contenu imaginaire. Essayez de changer äfä d'une autre manière pour obtenir un résultat plus correct.

Dans l'industrie, l'utilisation la plus courante des transformations de Fourier est pour l'analyse du signal. Pour filtrer les fréquences d'un signal bruyant, vous devez commencer par faire ou importer un signal. L'extrait de code suivant crée un signal mixte de deux fréquences, 50 et 70 Hz. Dans le code, vous pouvez également voir l'utilisation de «Grand», c'est l'appel scilab au hasard. Ces valeurs aléatoires sont ajoutées pour rendre le signal un peu plus bruyant, plus proche de la réalité.

Sample_Rate = 1000;
T = 0: 1 / Sample_RATE: 0.6;
N = size (t, '*'); //nombre d'échantillons
S = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + Grand (1, n, 'nor', 0,1);
Maintenant, vous pouvez tracer les «s» en fonction de «t» et voir que le graphique semble désordonné.
>> tracé (t, s);

Ici, il est temps d'essayer les transformations les plus simples de Fourier, faire de la transformée de Fourier de S.

y = fft (s);

FFT

Si vous tracez «y» en fonction de «t», vous obtenez un modèle quelque peu symétrique allant de 0 à 0.6. Les deux pointes sont ce que nous recherchons, mais nous les voyons maintenant dans le domaine temporel. Ce qui s'est vraiment passé, c'est que le résultat contenait toujours les valeurs imaginaires. Pour trouver les deux fréquences dans le domaine fréquentiel, nous avons besoin de plus d'opération en cours de recherche uniquement les nombres réels. Et puis vous prenez la valeur absolue des résultats. Le graphique souligne clairement les fréquences d'origine.

Voici le code:

// s est réel, donc la réponse FFT est conjuguée symétrique et nous ne conservons que le premier
N / 2 points
F = Sample_Rate * (0: (n / 2)) / n; // vecteur de fréquence associé
n = taille (f, '*')
CLF ()
Terrain (F, ABSY (1: N)))

C'est l'utilisation la plus courante de la transformée de Fourier. En utilisant ce système, vous pouvez trouver n'importe quelle fréquence dans un signal complexe et bruyant. Les équations sont largement utilisées dans de nombreuses industries aujourd'hui.
La fonction FFT2 de SCILAB est la version bidimensionnelle de la transformation de Fourier rapide.

Une excellente façon de s'entraîner est de choisir les tons DTMF, de créer un bouton appuyer et de demander à SCILAB de déterminer la bonne touche.

Les démos de Scilab lui-même contient une vitrine de fichiers son, l'étudier.

Si vous souhaitez creuser plus profondément, voici quelques liens vers la lecture plus approfondie.

Littérature avancée:

https: // cnx.org / contenu / ulxtqbn7 @ 15 / implémentation-ffts-in-practice # uid8

Wolfram…

http: // démonstrations.wolfram.com / complexandrealplanesofdiscretefourierTransforms /

Implémentation dans d'autres langues:

https: // www.Nayuki.Io / Page / comment mettre en œuvre le disqueur-transform

Pour avoir la bonne idée du sujet:

https: // meilleur.com / articles / an-interactive-guide-to-the-transform /