Académique Documents
Professionnel Documents
Culture Documents
Deber 4
TÍTULO: Transformada rápida de Fourier En esta primera parte del código aplicamos
(FFT) lo aprendido previamente en clases, es una
Problema – El objetivo principal de este simple generación de señal con 4
deber es comprobar la teoría vista en diferentes frecuencias
clases de la transformada rápida de Fourier
(FFT), para lo cual dividiremos este deberes figure
%grafica de la señal
en 3 partes.
subplot(2,1,1)
Parte 1.- plot(tn,yn)
sound(yn,Fs)%emisión de la señal
1) Usar Matlab en una sesión para por el puerto de audio
generar una señal cualquiera.
2) Usar Matlab en otra sesión o Aquí podemos observar la señal, para
computadora aparte receptar la obtener esta visualización se tuvo que
señal y aplicar la FFT para obtener hacer zoom a la imagen generada por el
las frecuencias. plot de matlab
Solución –
N=length(yn);%se toma el número
Parte 1.- de muestras para aplicar la FFT
%algoritmo para la FFT
En la práctica se demostró que basta con
nfft=2;%como se necesita
solo un código para generar y receptar la multiplos de dos comenzamos con
señal, ya que en la primera parte del 2
código se genera la señal y en la segunda while nfft<N
parte del código se recepta nfft=nfft*2;%número de FFT
end
Desarrollo : Yn=fft(yn,nfft);%aplicamos la
FFT
1. Generar la señal:
periodograma=abs(Yn);%sacamos el
Creamos el programa que nos generará la valor absoluto de la FFT
señal f=linspace(0,Fs,nfft);%esta será
nuestra variable en el eje x
clc
close all
clear all En la parte anterior del código aplicamos
duracion=15;%se le puso un los cálculos necesarios para usar el
tiempo mayor ya que el programa comando de “fft” que ofrece Matlab para
que recepta la señal no tenga proceder a graficar la señal en el dominio
problemas en captarla
de la frecuencia
Fmax=400;% nuestra frecuencia
máxima
%graficamos la señal en el
Fs=10*Fmax;%frecuencia a la cual
dominio de la frecuencia
vamos a muestrear
subplot(2,1,2)
Ts=1/Fs;%intervalo de tiempo
plot(f,periodograma);
tn=0:Ts:duracion;%vector de
axis([ 0 Fs/2 0
tiempo
max(periodograma)])%para no
yn=sin(2*pi*400*tn)+sin(2*pi*200
confundirnos solo tomamos la
*tn);%señal
ESCUELA POLITÉCNICA NACIONAL
Dayanna Cevallos, Quishuar Tasna, Andrés Sandoval
L=length(senial);%Obtencio
n de tamanio de senial
t=linspace(0,duracion1,L);
%creaciondel vector tiempo
frecuencias repetidas
nFFt=nFFt*nbits; S=0;
end Periodigrama=0;
f=linspace(0,fs,nFFt); end
%Periodigrama normal fclose(puerto);
Periodigrama=abs(fft(yn,nFFt)); delete(puerto);
subplot(2,2,2)
plot(f,Periodigrama)
title('Periodograma de la señal
modoficada')
xlabel('Frecuencia')
ylabel('Potencia')
axis([0 500 0
max(Periodigrama)])
drawnow
%sound(0.1*yn,fs)
%%%%%
Sing=zeros(fs,1);
i=1;
while(1)
sound(yn,fs)
%%%%
S=0;
delete(instrfind({'port'},{'COM1
'}));
puerto=serial('COM1');
puerto.BaudRate=192000;
fopen(puerto);
while(i<=fs*duracion/45)
Sing=fscanf(puerto,'%d');
S(i)=Sing(1)*5/1024;
i=i+1;
end
ta=linspace(0,duracion,length(S)
);
subplot(2,2,3)
plot(ta,S)
xlim([0 5])
drawnow
%%%periodograma modificado
N=length(S);
nFFt=2;
while nFFt<N
nFFt=nFFt*nbits;
end
f=linspace(0,fs,nFFt);
Periodigrama=abs(fft(S,nFFt));
subplot(2,2,4)
plot(f/45,Periodigrama);
xlabel('Frecuencia')
ylabel('Potencia')
axis([0 (fmax+100) 0
max(Periodigrama)])
drawnow
i=1;