Está en la página 1de 12

TRANSFORMADA DE FOURIER

PRÁCTICA 2
EJERCICIO 1
1. Calculo de la transformada de Fourier de una señal senoidal, grafica de la
amplitud del espectro y de la potencia del espectro en todo el rango de la frecuencia
de muestreo y a rango medio Fs/2

Implementar el siguiente código


close all;clear all;clc
% GENERADOR DE SECUENCIA PARA ONDA SINUSOIDAL
fs=8000; %TASA DE MUESTREO
N=1000; % NUMERO DE PUNTOS PARA DATOS
x=2*sin(2000*pi*[0:1:N-1]/fs); % ECUACION 1
% APLICACION DE ALGORITMO
figure(1) %GENERA FIGURA 1
xf=abs(fft(x))/N; %CALCULO DEL ESPECTRO DE AMPLITUD
P=xf.*xf; %CALCULO DE ESPECTRO DE POTENCIA
f=[0:1:N-1]*fs/N; %ASIGNA EL VALOR DE BIN A LA FRECUENCA
(HZ)
subplot(2,1,1); plot(f,xf);grid % DIVICION PARA A FIGURA
1 GRAFICA FUNCION f,fc con cuadricula
xlabel('Frequency (Hz)'); ylabel('Amplitude spectrum
(DFT)'); % TITULOS EN EJES X FRECUENCIA: Y AMPLITUD DE
SPECTRO
subplot(2,1,2);plot(f,P);grid %DIVICION DE FIGURA 1
GRAFICA f,P
xlabel('Frequency (Hz)'); ylabel('Power spectrum (DFT)');
%TITULOS EN EJES X FRECUENCIA Y ESPECTRO DE POTENCIA
figure(2) %GENERA FIGURA 2
%CONVERTIDOR A ESPECTRO LATERAL
xf(2:N)=2*xf(2:N); % FUNCION PARA ESPECTRO EN UN SOLO
LADO
P=xf.*xf; % CALCULO DEL ESPECTRO DE POTENCIA
f=[0:1:N/2]*fs/N; % MAXIMO VALOR DE LA FRECUENCIA HASTA
LA FRECUENCIA DE PLEGADO
subplot(2,1,1); plot(f,xf(1:N/2+1));grid % DIVIDE LA
FIGURA 2 GRAFICA f ' fx CON CUADRICULAS
xlabel('Frequency (Hz)'); ylabel('Amplitude spectrum
(DFT)');%TITULOS EN EJES X FRECUENCIA Y AMPLITUD DE
ESPECTRO
subplot(2,1,2);plot(f,P(1:N/2+1));grid %DIVIDE FIGURA 2
GRAFICA f'P
xlabel('Frequency (Hz)'); ylabel('Power spectrum (DFT)');
%SUBTITULOS EN LOS EJES X FRECUENCIA Y ESPECTRO DE
POTENCIA
figure (3) %GENERA FIGURA 3
% RELLENA DE CEROS LA LONGITUD NECESARIA HASTA 1024
x=[x,zeros(1,24)]; %GENERA EL VECTOR X CON CEROS DE 1 A
1024
N=length(x); % IGUALA EL NUMERO DE COMPONENTES DE UN
VECTOR AL MISMO TAMAÑO
xf=abs(fft(x))/N; %CALCULA EL ESPECTRO DE AMPLITUD
RELLNADO CON CEROS DEL VECTOR N
P=xf.*xf; %CALCULA EL ESPECTRO DE PONTENCIA
f=[0:1:N-1]*fs/N; %VECTOR F DESDE 0 EN PASOS DE 1 HASTA
N-1
subplot(2,1,1); plot(f,xf);grid % DIVIDE GRAFICA 3
GRAFICA f,FX
xlabel('Frequency (Hz)'); ylabel('Amplitude spectrum
(FFT)');%TITULOS EN LOS EJES X FRECUENCIA Y AMPLITUD DE
ESPECTRO
subplot(2,1,2);plot(f,P);grid %DIVIDE GRAFICA 3 GRAFICA
f,P CON CUADRICULA
xlabel('Frequency (Hz)'); ylabel('Power spectrum (FFT)');
%TITULOS EN LOS EJES X FRECUENCIA Y ESPECTRO DE POTENCIA
figure(4) %GENERA FIGURA 4
% CONVERTIDOR A ESPECTRO UNILATERAL
xf(2:N)=2*xf(2:N); %FUNCION PARA ESPECTRO UNILATERAL
P=xf.*xf; %CALCULO ESPECTRO DE POTENCIA
f=[0:1:N/2]*fs/N;%VECTOR f DESDE 0 EN PASOS DE 1 HASTA
N/2
subplot(2,1,1); plot(f,xf(1:N/2+1));grid %DIVIDE LA
GRAFICA 4 GRAFICA f,fx CON CUADRICULA
xlabel('Frequency (Hz)'); ylabel('Amplitude spectrum
(FFT)'); %TITULOS EN LOS EJES X FRECUENCIA Y AMPLITUD DE
ESPECTRO
subplot(2,1,2);plot(f,P(1:N/2+1));grid %DIVIDE LA GRAFICA
4 GRAFICA f Y P
xlabel('Frequency (Hz)'); ylabel('Power spectrum (FFT)');
%TITULOS EN LOS EJES X FRECUENCIA Y ESPECTRO DE POTENCIA
EJERCICIO 2
2. Utilizacion ventanas para reduccion del manchado spectral. Tipo de ventana
Triangular, Hamming y Hanning.
Implementar el siguiente código
close all;clear all;clc
% GENERA A SECUENCIA DE LA ONDA SINUSOIDAL
fs=8000; T=1/fs; % VALORES DE TASA DE MUESTREO Y PERIODO
DE MUESTREO
x=2*sin(2000*pi*[0:1:50]*T); %GENERA 51 MUESTRAS DE 2000
HZ MEDIANTE LA FUNCION X
% UTILIZA EL ALGORITMO FFT
N=length(x);% LONGITUD MAXIMA DEL VECTOR TOMANDO LA
FUNCION X
index_t=[0:1:N-1];%accede al elemento de la matris de
acuerdo al rango deseado
f=[0:1:N-1]*8000/N; %CAMBIO DEL MAPA BIN A FRECUENCIA HZ
xf=abs(fft(x))/N; %CALCULA LA AMPLITUD DEL ESPECTRO
figure(1) % GENERA LA FIGURA 1
%EMPIEZA LA UTILIZACION DE LA VENTNA DE BERTLETT
x_b=x.*bartlett(N)'; %APLICA LA FUNCION DE LA VENTANA
TRIANGULAR
xf_b=abs(fft(x_b))/N; %CALCULA LA AMPLITUD DEL ESPECTRO
subplot(2,2,1);plot(index_t,x);grid %DIVIDE FIGURA 1Y
GRAFICA INDEX DE T,X CON CUADRICULA
xlabel('Time index n'); ylabel('x(n)');%GENERA TITULOS EN
LOS EJES X TIEMPO DE INDEX Y VALOR DE X(N)
subplot(2,2,3); plot(index_t,x_b);grid%DIVIDE LA GRAFICA
1 GRAFICA INDEX DE T CON VARIABES X,B CON CUADRICULA
xlabel('Time index n'); ylabel('Triangular windowed
x(n)');%GENERA TITULOS EN LOS EJES X TIEMPO DE INDEX Y
VENTANA DE TRIANGULO EN FUNCION DE X(N)
subplot(2,2,2);plot(f,xf);grid;axis([0 8000 0 1]);%DIVIDE
LA GRAFICA 1 GRAFICA f'xf CON CUADRICULAS
xlabel('Frequency (Hz)'); ylabel('Ak (no window)');
%GENERA TITULOS EN LOS EJES X FRECUENCIA Y NO VENTANA
subplot(2,2,4); plot(f,xf_b);grid; axis([0 8000 0 1]);
%DIVIDE LA GRADICA 1 GRAFICA f,xf CON CUADRICULA
xlabel('Frequency (Hz)'); ylabel('Triangular windowed
Ak');%GENERA LOS TITULOS EN LOS EJES X FRECUENCIA Y
VENTANA DE TRIANGULO
figure(2) %GENERA FIGURA 2
% generate the sine wave sequence
x=2*sin(2000*pi*[0:1:100]*T); %GENERA LA FUNCION PARA
TOMAR 101 MUESTRAS DE 2000 HZ
% APLYCA EL ALGORITMO FFT
N=length(x);%LONGITUD MAXIMA DEL VECTOR TOMANDO LA
FUNCION X
index_t=[0:1:N-1];%accede al elemento de la matris de
acuerdo al rango deseado
f=[0:1:N-1]*fs/N;%CAMBIO DEL MAPA BIN A FRECUENCIA HZ
xf=abs(fft(x))/N; %CALCULA LA AMPLITUD DEL ESPECTRO
%APLICA LA VENTANA DE HAMMING
x_hm=x.*hamming(N)'; %UTILIZA LAL FUNCION DE LA VENTANA
DE HAMMING
xf_hm=abs(fft(x_hm))/N; %CALCULA EL ESPECTRO DE AMPLITUD
subplot(2,2,1);plot(index_t,x);grid %DIVIDE LA FIGURA 2
GRAFICA INDEXT Y X CON CUADRICULA
xlabel('Time index n'); ylabel('x(n)');%GENERA LOS
TITULOS EN LOS EJES X TIEMPO DE INDEX Y X(N)
subplot(2,2,3); plot(index_t,x_hm);grid%DIVIDE LA FIGURA
2 GRAFICA INDES T , X CON CUADRIGULA
xlabel('Time index n'); ylabel('Hamming windowed x(n)');
% GENERA LOS TITULOS EN LOS EJES X TIEMPO DE INDES Y
VENTANA DE HAMMING
subplot(2,2,2);plot(f,xf);grid;axis([0 fs 0 1]);%DIVIDE
LA GRAFICA GRAFICA f,fx CON CUADRICULA
xlabel('Frequency (Hz)'); ylabel('Ak (no window)');
%GENERA TITULOS EN EJES X FRECUENCUA Y AK NO VENTANDA
subplot(2,2,4); plot(f,xf_hm);grid;axis([0 fs 0 1]);
%DIVIDE LA FIGURA 2 GRAFIA f,fx LIMITA LA GRAFICA CON fs
xlabel('Frequency (Hz)'); ylabel('Hamming windowed Ak');
%GENERA LOS TITULOS EN LOS EJES X FRECUENCIA Y VENTANA DE
HAMMING
figure(3)%GENERA LA FIGURA 3
% GENERA LA SECUENCIA PARA LA ONDA SINUSOIDAL
x=2*sin(2000*pi*[0:1:150]*T); %FUNCION QUE GENERA 151
MUESTRAS DE 1-KHZ
%APLICA EL ALGORITMO FFT
N=length(x);%LONGITUD MAXIMA DEL VECTOR TOMANDO LA
FUNCION X
index_t=[0:1:N-1];%accede al elemento de la matris de
acuerdo al rango deseado
f=[0:1:N-1]*fs/N;%CAMBIO DEL MAPA BIN A FRECUENCIA HZ
xf=2*abs(fft(x))/N;xf(1)=xf(1)/2; %FUNCION DEL ESPECTRO
UNILATERAL
%UTILIZA LA FUNCION DE VETNANA DE HAMMING
x_hn=x.*hann(N)';%CALCULA ESPECTRO DE AMPLITUD PARA LA
FUNCION DE HAMMING
xf_hn=2*abs(fft(x_hn))/N;xf_hn(1)=xf_hn(1)/2;%FUNCION DE
ESPECTRO UNILATERAL
subplot(2,2,1);plot(index_t,x);grid%DIVIDE GRAFICA 3
GRAFICA INDES t,x CON CUADRICULA
xlabel('Time index n'); ylabel('x(n)');%GENERA TITULOS EN
EJES X TIEMPO DE INDEX Y X(N)
subplot(2,2,3); plot(index_t,x_hn);grid%DIVIDE LA GRAFICA
3 GRAFICA INDESt Y x
xlabel('Time index n'); ylabel('Hanning windowed x(n)');
%GENERA TITULOS EN EJES X TIEMPO DE INDEX Y Y VENTANA DE
HANNING
subplot(2,2,2);plot(f(1:(N-1)/2),xf(1:(N-
1)/2));grid;axis([0 fs/2 0 2]);%DIVIDE LA GRAFICA GRAFICA
f Y xf
xlabel('Frequency (Hz)'); ylabel('Ak (no window)');
%GENERA TITULOS EN EJES X FRECUENCIA Y AK NO VENTANA
subplot(2,2,4); plot(f(1:(N-1)/2),xf_hn(1:(N-
1)/2));grid;axis([0 fs/2 0 2]);%DIVIDE LA FIGURA 3
GRAFICA f Y xf CON CUADRICULA Y LIMITA A FS
xlabel('Frequency (Hz)'); ylabel('Hanning windowed Ak');
%GENERA LOS TITULOS EN LOS EJES X FRECUENCIA Y VENTANA DE
HANNING

figura 1 para 51 muestras de 2000 HZ

FIGURA 2 PARA 151 MUESTRAS DE 2000 HZ


FIGURA 3 PARA 151 MUESTRAS DE 1KHZ
FILTRO FIR

PRÁCTICA 4

El siguiente es un filtro diseñado para una frecuencia de corte de 800 HZ con


frecuencia de muestreo de 8000 Hz.
La ecuación en difrencias es y(n)= 0.1871x(n-2)+0.2x(n-1)+0.1871x(n)
Implementar el siguiente código
%FILTRO PARA UNA FRECUENCIA DE CORTE DE 800 HZ
%CON FRECUENCIA DE MUESTREO DE 8000HZ
[hz,w]=freqz([0.1871 0.2 0.1871], [1], 512);%GENERA
VECTOR HZ,W para diferentes frecuencias de muestreo
phi=180*unwrap(angle(hz))/pi;%MULTIPLICA POR 180 LOS
ANGULOS DEL VECTOR hz QUE ESTA EN RADIANES --LIMITA CON
ANGLE LOS VALORES DENTRO DE MENOS PI A PI
subplot(2,1,1), plot(w,20*log10(abs(hz))),grid;%GENERA
FIGURA 1 LA DIVIDE EN DOS Y GRAFICA MAGINTUD EN dB Y
FRECUENCIA EN RADIANES
xlabel('Frequency (radians)'); %TITULO EN X FRECUENCIA EN
RADIANES
ylabel('Magnitude Response (dB)')%TITULO EN Y MAGNITUD DE
RESPUESTA EN dB
subplot(2,1,2), plot(w, phi); grid; %DIVIDE LA GRAFICA
GRAFICA FASE EN GRADOS Y FRECUENCIA EN RADIANES
xlabel('Frequency (radians)');% TITULO EN X FRECUENCIA EN
RADIANES
ylabel('Phase (degrees)');%TITULO EN Y FASE EN GRADOS

También podría gustarte