Você está na página 1de 6

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO

PROYECTO FINAL
ANALISIS DE SEÑALES

INTEGRANTES: GRACE BONILLA 689


CRISTIAN CHAFLA 691

TRANSFORMADA DE FOURIER
La transformada de Fourier, denominada así por Joseph Fourier, es una transformación matemática
empleada para transformar señales entre el dominio del tiempo (o espacial) y el dominio de la
frecuencia, que tiene muchas aplicaciones en la física y la ingeniería. Es reversible, siendo capaz de
transformarse en cualquiera de los dominios al otro. El propio término se refiere tanto a la
operación de transformación como a la función que produce.
En el caso de una función periódica en el tiempo, la transformada de Fourier se puede simplificar
para el cálculo de un conjunto discreto de amplitudes complejas, llamado coeficientes de las series
de Fourier. Ellos representan el espectro de frecuencia de la señal del dominio-tiempo original.
La transformada de Fourier así definida goza de una serie de propiedades de continuidad que
garantizan que puede extenderse a espacios de funciones mayores e incluso a espacios de funciones
generalizadas.
Sus aplicaciones son muchas, en áreas de la ciencia e ingeniería como la física, la teoría de los
números, la combinatoria, el procesamiento de señales (electrónica), la teoría de la probabilidad, la
estadística, la óptica, la propagación de ondas y otras áreas. En procesamiento de señales la
transformada de Fourier suele considerarse como la descomposición de una señal en componentes
de frecuencias diferentes, es decir corresponde al espectro de frecuencias de la señal.

PROGRAMA QUE PERMITA CAPTAR LA SEÑAL ANALÓGICA DE NUESTRA VOS EN


FUNCIÓN DEL TIEMPO Y DESPUÉS QUE PERMITA VERSE EN FUNCIÓN DE LA
FRECUENCIA.

Para transformar una función del dominio temporal al frecuencial, es necesario hacer la
transformada de Fourier de dicha función. En el caso de una señal contínua la
transformada recibe el nombre de Transformada de Fourier mientras que si es de caracter
discreto o digital, se le conoce como DFT (Discrete Fourier Transform).
CODIGO MATLAB:
audio = audioread('audio.wav');
Fs = 16000;
L = length(audio);
NFFT = 2^nextpow2(L);
Y = fft(audio, NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f, 2*abs(Y(1:NFFT/2+1);
FIGURA 1. SEÑAL ANALÓGICA EN FUNCIÓN Y LA FRECUENCIA

PROGRAMA QUE VISUALICE UN AUDIO EN FUNCIÓN DEL TIEMPO Y EN FUNCIÓN DE


LA FRECUENCIA.
Una de los aspectos básicos para desarrollar un análisis de audio con ayuda de algún software
computacional, consiste en cargar un archivo de audio y poder realizar algún proceso de análisis básico,
como lo es el calculo de la Transformada de Fourier, para obtener una visualización del comportamiento
de la señal en el dominio de la frecuencia ademas de su visualización en el dominio del tiempo. Por
razones de eficiencia computacional, para el calculo de la Transformada de Fourier, se utiliza su versión
FFT (Fast Fourier Transform). La Transformada de Fourier que nos entrega un vector con componentes
complejas con información de magnitud y fase, con una longitud igual a la señal original, pero de la cual
solo consideramos la mitad izquierda. Sobre temas de FFT existe bastante información en la web, a
continuación un par de sitios web donde es posible encontrar material puestos a disposicion por sus
propios autores donde se explica ampliamente estos y otros topicos relacionados con Teoría de Análisis
de Señales
CODIGO MATLAB:
clear; %limpiar variables

clc; %limpiar pantalla


[data fs]=wavread('01_piano.wav'); %leyendo el archivo y su frecuencia de sampleo

%%%%%%%%%%%%% GRAFICANDO %%%%%%%%%%%%%

subplot(2,1,1) % se utiliza el comando subplot para hacer graficos con mas de un sector
plot(data); % graficanado la señal en el dominio de los samples de tiempo

subplot(2,1,2)
a=abs(fft(data)); % calculamos la FFT
plot(a(1:end/2)); % graficando la mitad de la señal en el dominio de los samples de la frecuencia

FIGURA 2. AUDIO EN FUNCIÓN DEL TIEMPO Y EN FUNCIÓN DE LA FRECUENCIA.


PROGRAMA QUE PERMITA VER LAS ONDAS EN FUNCIÓN DEL TIEMPO DE UN
CIRCUITO REAL EN FUNCIÓN DE LA FRECUENCIA.

En primer lugar, vamos a preparar el Arduino. Conectamos los


potenciómetros entre los pines de +5V y Gnd (neutro) y sus pines
centrales (que por tanto presentarán un voltaje entre +5V y 0V) a las
entradas analógicas A0 y A1 del Arduino, de esta manera:

FIGURA 3. CONECCION DE ARDUINO PARA SEÑALES EXTERNAS


CODIGO ARDUINO:
int out1 = 0;
int out2 = 0;

void setup() {
// inicializar puerto serie
Serial.begin(9600);
}

void loop() {
// leer pines
out1 = analogRead(A0);
out2 = analogRead(A1);
// enviar
Serial.print(out1);
Serial.print(",");
Serial.println(out2);
// esperar
delay(20);
}
CODIGO MATLAB:
%borrar previos
delete(instrfind({'Port'},{'COM4'}));
%crear objeto serie
s = serial('COM4','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%abrir puerto
fopen(s);

% parámetros de medidas
tmax = 10; % tiempo de captura en s
rate = 33; % resultado experimental (comprobar)

% preparar la figura
f = figure('Name','Captura');
a = axes('XLim',[0 tmax],'YLim',[0 5.1]);
l1 = line(nan,nan,'Color','r','LineWidth',2);
l2 = line(nan,nan,'Color','b','LineWidth',2);

xlabel('Tiempo (s)')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
grid on
hold on

% inicializar
v1 = zeros(1,tmax*rate);
v2 = zeros(1,tmax*rate);
i = 1;
t = 0;

% ejecutar bucle cronometrado


tic
while t<tmax
t = toc;
% leer del puerto serie
a = fscanf(s,'%d,%d')';
v1(i)=a(1)*5/1024;
v2(i)=a(2)*5/1024;
% dibujar en la figura
x = linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
set(l2,'YData',v2(1:i),'XData',x);
drawnow
% seguir
i = i+1;
end
% resultado del cronometro
clc;
fprintf('%g s de captura a %g cap/s \n',t,i/t);
FIGURA 4. ONDAS EN FUNCIÓN DEL TIEMPO DE UN CIRCUITO REAL EN FUNCIÓN DE
LA FRECUENCIA.

Você também pode gostar