Scilab fft Howto

Scilab fft Howto
Scilab é uma ótima ferramenta para muitos usos no trabalho científico e de engenharia. Este artigo abordará o caso especial de FFT, transformação rápida de Fourier.

Primeiro, vamos esclarecer o que é a transformação rápida de Fourier e por que você quer usá -la. A matemática é tudo sobre frequências. A transformação de Fourier é um método para destacar ondas menores em uma onda complexa. Isso parecia complexo; Quando você ouve música, ouve muitas notas diferentes do cantor, instrumentos e assim por diante. Como seres humanos, muitas vezes podemos ouvir o violão por conta própria, mas tente destacá -lo com a tecnologia em uma gravação e você terá problemas. A tecnologia moderna pode fazê -lo, graças às diferentes encarnações das equações básicas de Fourier que foram desenvolvidas ao longo dos anos. Usos modernos da série Fourier são compressão de imagens e vídeos, GPS e ressonância magnética. Tudo isso faz uma aproximação da fonte e usa a série Fourier para salvar a memória e obter resultados mais rápidos.

O matemático Jean-Baptiste Joseph Fourier estava realmente tentando resolver a equação do calor, para possibilitar calcular como o calor se propaga em matéria sólida. O que ele criou foi muito mais útil do que isso, apesar de seus métodos mais tarde foram melhorados para uma versão mais formal. As equações agora são usadas em uma ampla gama de campos.

Para destacar uma frequência específica em um sinal complexo, você pode usar alguns cálculos, as transformadas rápidas de Fourier. A base matemática para isso exige alguma prática. Khan Academy é um bom lugar para aprender a matemática.

Quando você precisa analisar quaisquer ondas, você pode usar funções senoidais para aproximar a onda total e obter todos os sinais separados da onda mista. Ou vice -versa, você pode fazer uma onda complexa de várias ondas senoidais. Esta é a ideia básica por trás da matemática.

Para entender melhor o seu Fourier, uma boa prática é escrevê -los você mesmo. No Scilab, você tem uma linguagem de programação simples projetada com ênfase na matemática.
As diferentes tarefas de que você precisará de transformadas de Fourier começam com os coeficientes de uma transformação. O motivo é que é isso que é usado para a compressão de imagens e muitos outros processos.

Quando você aprende o básico da série, a primeira coisa que é usos são os coeficientes. As equações são assim:

O código para resolvê -los é bastante simples, começa com uma função. Esta função implementa a transformação de Fourier em pequenos pedaços.
Para definir uma função, você usa a construção óbvia de 'função'. Abaixo está uma série de Fourier para uma onda quadrada:

função 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
Função final

Para tornar a onda ainda mais quadrada, é uma aproximação, afinal, você precisa continuar aumentando o número de termos. Quando você deseja recriar um padrão, digamos um desenho animado, você usa a transformação de Fourier de uma maneira muito semelhante. Você só precisa considerar o período como infinito.

Simples à direita? Bem, não sem o conhecimento básico de matemática. Experimente alguns exemplos, usando o Scilab.

Este exemplo mostra a combinação de sinal mais simples possível; dois sinais de frequência diferente.

// Escolha um tamanho de amostra
N = 100;
// Defina a sequência, isso cria a matriz
n = 0: n-1;
// Crie a frequência dos sinais
W1 = %PI/4
W2 = %pi/8
// Faça os sinais amostrados
s1 = cos (w1*n); // o primeiro componente do sinal
s2 = cos (w2*n); // o segundo componente do sinal
// combina os dois em um sinal
// Nesse caso, fazemos um sinal limpo simples.
f = s1 + s2;
// aqui está o sinal resultante pronto para transformar.
Figura (0);
plot (f);
// A transformação de Fourier desse sinal deve mostrar apenas a frequência dos componentes.
F = fft (f);
F_ABS = ABS (F);
figura 1);
plot (n, f_abs);
Figura 2);
plot (f);

Use o exemplo acima para praticar como a transformação funciona. Certifique -se de alterá -lo para filtrar de maneiras diferentes.

Uma dica é usar o console do Scilab para ver o que as variáveis ​​contêm em cada etapa do programa, assim você também pode ver que 'f' tem um conteúdo imaginário. Tente mudar äfä de outra maneira para obter um resultado mais correto.

Na indústria, o uso mais comum de transformações de Fourier é para analisar o sinal. Para filtrar as frequências a partir de um sinal barulhento, você precisa começar com a criação ou importação de um sinal. O snippet de código a seguir cria um sinal misto de duas frequências, 50 e 70 Hz. No código que você também pode ver o uso de 'Grand', esta é a chamada do Scilab para aleatório. Esses valores aleatórios são adicionados para tornar o sinal um pouco mais barulhento, mais próximo da realidade.

sample_rate = 1000;
t = 0: 1/sample_rate: 0.6;
N = tamanho (t, '*'); //Número de amostras
s = sin (2*%pi*50*t)+sin (2*%pi*70*t+%pi/4)+grand (1, n, 'Nor', 0,1);
Agora, você pode plotar 's' em função de 't' e ver que o gráfico parece bagunçado.
>> plot (t, s);

Aqui, é hora de experimentar as transformadas mais simples de Fourier, faça 'Y' a transformação de Fourier de S.

y = fft (s);

fft

Se você plotar 'y' em função de 't', você terá um padrão um tanto simétrico que varia de 0 a 0.6. Os dois picos são o que estamos procurando, mas agora os estamos vendo no domínio do tempo. O que realmente aconteceu foi que o resultado ainda continha os valores imaginários. Para encontrar as duas frequências no domínio da frequência, precisamos de mais algumas operações, encontre apenas os números reais. E então você assume o valor absoluto dos resultados. O gráfico aponta claramente as frequências originais.

Aqui está o código:

// s é real, então a resposta da FFT é simétrica conjugada e mantemos apenas o primeiro
N/2 pontos
f = sample_rate*(0: (n/2))/n; // vetor de frequência associado
n = tamanho (f, '*')
clf ()
Lote (F, Absy (1: n))))

Este é o uso mais comum da transformação de Fourier. Usando este sistema, você pode encontrar qualquer frequência em um sinal complexo e barulhento. As equações são amplamente utilizadas em muitos setores hoje.
A função FFT2 do Scilab é a versão bidimensional da transformação rápida de Fourier.

Uma ótima maneira de praticar é escolher os tons DTMF, criar um botão Pressione e fazer com que o Scilab descubra a tecla correta.

As demos no Scilab contém uma exibição de arquivos de som, estude -a.

Se você quiser se aprofundar, aqui estão alguns links para leitura adicional.

Literatura Avançada:

https: // cnx.org/contents/ulxtqbn7@15/implementing-ffts-in-practice#uid8

Volfrâmio…

http: // demonstrações.volfrâmio.com/complexandrealplanesofdiscretefouriertransforms/

Implementação em outros idiomas:

https: // www.Nayuki.IO/PAGE/COMO-TO-IMPLEMENTE O DISCRETE-FURIERIER-FORRANSForm

Para obter a sensação certa do assunto:

https: // melhorexplicado.com/artigos/an-interativo-guide-the-fourier transform/