Вы находитесь на странице: 1из 13

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIERA ELCTRICA Y


ELECTRNICA
LABORATORIO DE COMUNICACIN

TRABAJO

PREPARATORIO
Prctica N 3 Tema: ANLISIS ESPECTRAL EN MATLAB Y
SIMULINK.
Fecha de realizacin: 11/05/2016. Fecha de entrega:

Realizado por:
Alumno(s):
Marcelo
Grupo: GR3.
Barros.

Semestre: 2016 A.
Abril 2016 Agosto 2016.

Prctica N3: ANLISIS ESPECTRAL EN MATLAB Y SIMULINK.

Objetivos:

Aplicar los conceptos relacionados a la teora de anlisis de seal en el dominio del


tiempo y la frecuencia.
Utilizar SIMULINK para analizar seales en el dominio del tiempo y frecuencia.

Trabajo preparatorio:

1) Consultar sobre las funciones de MATLAB para procesamiento de seales: fir1, fir2,
buttord, butter, cheb1ord, cheb2ord, cheby1, cheby2, filter, filtfilt, freqz, pwelch, rand
y guide. (La consulta consiste en realizar un prrafo explicativo de 3 o 4 lneas sobre
el uso de la funcin, sus parmetros, y los datos devueltos por la funcin).

fir1:
Se multiplica la respuesta en el tiempo de un filtro ideal con una funcin ventana. Truncando la
respuesta ideal a un nmero finito de elementos.
num=fir1(n,Wp)
n: Orden del filtro
Wp: Vector que contiene las frecuencias de corte.
Si slo tiene un elemento se obtiene un filtro pasabajos y si contiene dos elementos se obtiene u
filtro pasabanda.

fir2
Esta funcin nos permite seleccionar la respuesta frecuencial del filtro.
Ejemplo, filtro pasa bajo:
f = [0 0.6 0.6 1];
m = [1 1 0 0];
b = fir2(30,f,m);
[h,w] = freqz(b,1,128);
plot(f,m,w/pi,abs(h))
legend('Ideal','Diseo fir2')
title('Comparacin entre respuestas en frecuencia')

buttord
A partir de las especificaciones de atenuacin mxima en la banda de paso y mnima en la de
rechazo as como de las respectivas frecuencias de corte de cada una de las bandas, nos da el
orden del filtro y la frecuencia natural del filtro.
Es decir, determina el orden del filtro para las especificaciones
[nB,WnB]=buttord(Wp,Ws,Rp,Rs)
Wp, Ws, Rp y Rs corresponden a las especificaciones.
WnB: Frecuencia a -3 dB.

Butter
A partir del orden del filtro y de la frecuencia natural, la funcin butter nos da los polinomios
correspondientes al numerador y al denominador de la funcin de transferencia.
Es decir, Obtiene los coeficientes del filtro.
[numB,denB]=butter[nB,WnB]
En el diseo de filtros Pasabanda o rechazo de banda el orden del filtro resulta ser en realidad el
doble del especificado por el comando buttord.
Los ms usuales son los siguientes:
Butterworth Pasabajas: [num,den]=butter(nB,Wn)
Butterworth Pasaaltas: [num,den]=butter(nB,Wn,high)

cheb1ord y cheby1
Filtros IIR proceden directamente de la aplicacin de mtodos que tradicionalmente se han aplicado
en el desarrollo de filtros analgicos tales como eran las aproximaciones de Butterword, Chebyshev
o Elptica. Matlab dispone de funciones semejantes a las anteriores para el desarrollo de
aproximaciones chebyshev. En este caso, en la aproximacin tipo I de chebyshev o llamada tambin
directa, las funciones a utilizar son la chen1ord y la cheby1.
El orden obtenido a partir de esa funcin, que requiere las mismas entradas de datos que la
correspondiente de la aproximacin Butterword, es de 7. Este orden es muy inferior al de las
anteriores aproximaciones.
[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s')
[b,a]=cheby1(n,Rs,Wn)
Regresa el grado mnimo y frecuencia que puede tener el filtro con ciertas caractersticas deseadas.
Significado de las iniciales:
Wp = Frecuencia de corte, sta debe estar entre 0 y 1 donde .5 sera la frecuencia de muestreo
(teorema de Nyquist).
Ws = Frecuencia de paro, esta es donde la seal es atenuada casi por completo, est en las mismas
unidades de Wp, y est entre 0 y 1.
Rp = Atenuacin del rizo.
Rs = Atenuacin de las frecuencias no deseadas.

cheb2ord y cheby2
Mediante las funciones de matlab cheb2ord y cheby2 obtenemos de forma relativamente sencilla la
aproximacin buscada. Eso se debe a que la forma de obtener una a partir de la otra es mediante
una sencilla transformacin matemtica que implica dejar inalterado el orden de la aproximacin. El
nico cambio que se introduce es que el rizado se traslada a la banda de rechazo siendo ahora la
banda de paso mximamente plana como lo era en el caso de Buterword. Si bien, el orden es menor
pues ahora no tenemos un exceso de atenuacin en la banda de rechazo tan acentuado como en el
caso de la Butterword.
[n,Wn]=cheb2ord(Wp,Ws,Rp,Rs,'s')
[b,a]=cheby2(n,Rs,Wn)
Regresa el grado mnimo y frecuencia que puede tener el filtro con ciertas caractersticas deseadas.
Wp= Frecuencia de corte, sta debe estar entre 0 y 1 donde .5 sera la frecuencia de muestreo
(teorema de Nyquist).
Ws= Frecuencia de paro, esta es donde la seal es atenuada casi por completo, est en las mismas
unidades de Wp, y est entre 0 y 1.
Rp= Atenuacin del riso.
Rs=Atenuacin de las frecuencias no deseadas.

filter
Mediante sencillas transformaciones por medio de la funcin filter podemos obtener la respuesta
en Z del filtro digital.
Seal de Salida del Filtro Para una Seal de Entrada
y=filter(num,den,x) Donde: x es la seal de entrada.

filtfilt
y = filtfilt (b, a, x)
Realiza filtrado digital de fase cero mediante el procesamiento de los datos de entrada, x, en ambas
direcciones directa e inversa. b: proporciona los coeficientes del numerador del filtro y el vector de
los coeficientes proporciona un denominador.
Si utiliza un filtro de todos los polos, introduzca 1 para b.
Si utiliza un filtro de todo ceros (FIR), introduzca 1 para a.
Despus de filtrar los datos en la direccin de avance, filtfilt invierte la secuencia filtrada y se ejecuta
de nuevo a travs del filtro. El resultado tiene las siguientes caractersticas:
Distorsin de Fase Cero; Una funcin de transferencia del filtro, que es igual a la magnitud al
cuadrado de la funcin de transferencia filtro original.
Para una orden de filtro que es el doble del orden del filtro especificado por b y a filtfilt minimiza la
puesta en marcha y termina transitorios, haciendo coincidir las condiciones iniciales, y se puede
utilizar tanto para reales y complejos.

freqz
Mediante sencillas transformaciones por medio de la funcin freqz podemos obtener la respuesta en
Z del filtro digital.
Respuesta de Magnitud y Fase de Filtros
[H,F]=freqz(num,den): Por defecto asume 512 puntos equidistantemente espaciados y el eje de
frecuencias es normalizada.
[H,F]=freqz(num,den,n,Fs): Donde se especifica nmero de puntos n y la frecuencia de muestreo
Fs.
[H,F]=freqz(num,den,f,Fs): Donde f es un vector en el que se especifica las frecuencias particulares
en las que se obtendr la respuesta de magnitud y fase.

pwelch
Esta funcin estima la densidad de potencia espectral (PSD) de una seal utilizando el mtodo de
Welch:
[Pxx, f]=pwelch(x, window, noverlap, nfft, fs) La seal x a analizar se divide en k secciones de nfft
puntos que pueden estar solapadas. k se calcula a partir de:
m: tamao de x
n: nmero de puntos solapados
l=nfft: tamao de cada seccin
Se aplica la ventana especificada window a cada seccin de x
Se calcula el espectro de cada seccin a partir de la fft
Se obtiene el promedio de los espectros, que se multiplica por 1/fs para obtener la PSD (unidades
de potencia/Hz; V2 /Hz o g 2 /Hz).

randy guide
Una de las tantas herramientas con la que cuenta MatLab, es la creacin de GUIs. La forma de
implementar las GUI con MatLab es crear los objetos y definir las acciones que cada uno va a
realizar. Al usar GUIDE obtendremos dos archivos:
Un archivo FIG Contiene la descripcin de los componentes que contiene la interfase.
Un archivo M Contiene las funciones y los controles del GUI as como el callback
Un callback se define como la accin que llevar a cabo un objeto de la GUI cuando el usuario lo
active. Para ejemplificarlo, suponga que en una ventana existe un botn el cual al presionarlo
ejecutar una serie de acciones, a eso se le conoce como la funcin del callback.
De todo lo anterior mencionaremos las partes ms importantes de GUIDE:
Inspector de propiedades: Cada control cuenta con diferentes propiedades y es aqu donde
podremos cambiar: el color, el nombre, el tag, el valor, el callback entre otros.
Activar Figura: Una vez que hayamos terminado de disear presionamos este botn para activar la
figura y poder probar nuestra GUI.
Push Button: Crea un botn
Radio Button: Crea un botn circular
Edit Text: Crea una campo de texto
Axes: Crea una rea para grficas.
Frame: Crea un marco que puede contener otros controles
Static Text: Crea un letrero

2) Consultar y detallar el funcionamiento de los bloques de Simulink que permitan


obtener el espectro de magnitud de una seal.

TO WORKSPACE: Enva las variables generadas en el SIMULINK al MATLAB, esta se


genera en la ventana de comandos de Matlab.

SIGNAL GENERATOR: Puede generar cuatro diferentes tipos de formas de onda: onda
seno (sine), onda cuadrada (square), onda diente de sierra (sawtooth) y onda aleatoria
(ramdom). Los parmetros de las seales son expresados en hercios o radianes por
segundo. Se puede invertir la onda configurando el valor de la amplitud en negativo en la
ventada de dialogo de parmetros.

ANALIZADOR DE ESPECTROS: (Signal Processing Blockset/Signal Processing


Sinks/Spectrum Scope). En el Spectrum Scope, establecer Buffer size, Buffer overlap y
Number of spectral averages.

BLOQUE DE SUMA: Es aquel que realiza la operacin de sumatoria o resta en sus


entradas. Este bloque puede sumar o restar escalar, vector o matriz de entradas.
Tambin se pueden colapsar los elementos de una seal.

MUESTREO: Es necesario dado que los generadores son seales en tiempo continuo y el
analizador de espectros calcula la FFT de una seal discreta.

GAIN: Multiplica la entrada por un valor constante (ganancia). La entrada y la ganancia


pueden ser un escalar, un vector o una matriz. El valor de la ganancia se especifica a travs
del parmetro Gain. El parmetro Multiplication determina se la multiplicacin es matricial
o elemento a elemento. El orden de las multiplicaciones en las operaciones matriciales es
configurado a travs de este parmetro.

SCOPE: Muestra su entrada con respecto al tiempo de simulacin. El bloque


scope puede tener varios ejes (uno por cada puerto) y todos los ejes tienen un rango de
tiempo comn con los independientes y los ejes. El bloque scope le permite ajustar la
cantidad de tiempo y el rango de valores de entrada que se muestra. Puede mover y
redimensionar la ventana del alcance y se pueden modificar los valores del alcance de los
parmetros durante la simulacin. Al final, este bloque a nivel de prcticas muestra la forma
de las ondas de las seales en forma grfica.
Este bloque est conectado a la salida de un sistema que muestra el contenido de
frecuencia de la memoria intermedia en la ventana grfica.
3) Graficar en el tiempo el producto de funciones g1 y g2 en los siguientes casos:

a. g1(t) = a1*cos (3**f1*t)


g2(t) Una funcin diente de sierra simtrica peridica con amplitud A, periodo T,
frecuencia f2 y un espacio entre seal 1.

Para los valores de frecuencia f1 = 4kHz y f2 = 3kHz, tao= a1=2.5 y A=5.

Seales g1(t) y g2(t)

1
g2(t)

3 0

-1
2
-2

-3
1
-4
g1(t)

0 -5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
t[ms] -3
x 10
-1

Seal resultante
-2

-3
0 1 2 3 4 5 6 7
t[ms] -4
x 10
b. g1(t) = a1*cos (*f1*t)
g2(t) es una funcin diente de sierra de periodo T = 1/f2 de acuerdo a la siguiente
figura:
Para los valores de frecuencia f1 = 4kHz y f2 = 3kHz, a1=2.5 y A=5.

Funciones g1(t) y g2(t)

3
5

4.5
2
4

3.5
1
3
g1(t)

g2(t)

0 2.5

2
-1
1.5

1
-2
0.5

-3 0
0 0.5 1 1.5 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
t[s] -3 t[s] -3
x 10 x 10

Funcin resultante

Funcin g1(t)*g2(t)
15

10

0
r(t)

-5

-10

-15
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
t[s] -3
x 10

c. g1(t) = a1*sen (2**f1*t)


g2(t) es una funcin cuadrada con amplitud A, periodo T y tiempo de duracin en bajo
de , de acuerdo a la siguiente figura:

Para los valores de A=10, O=5, T=5 y tao=2.

Seales g1(t) y g2(t)

10
15
8

6
10
4

2
g1(t)

g2(t)

0 5

-2

-4
0
-6

-8

-5
-10
0 5 10 15 0 5 10 15
t[s] t[s]

Funcin resultante

Funcin g1(t)*g2(t)
150

100
r(t)

50

-50
0 5 10 15
t[s]

4) Elaborar un GUI independiente por cada literal de funciones (a, b, c) que permita
graficar en una:
Las 2 seales
La seal (multiplicada) en funcin del tiempo
El espectro de potencia de dicha seal, de las funciones: a, b y c, del literal
anterior.
El GUI (Interfaz Grfica de Usuario) deber permitir ingresar en un textbox los
valores de Amplitud, Periodo y Nmero de periodos de las seales; y con un
botn se generen todas las seales.

GUIDE DE LA PARTE A CON UN EJEMPLO

GUIDE DE LA PARTE B CON UN EJEMPLO


GUIDE DE LA PARTE C CON UN EJEMPLO

EJEMPLO DE PROGRAMACION
Se presenta el cdigo del pushbutton del primer GUIDE, el cual es el que realiza las
grficas, para los dems es un cdigo similar, pero cambiando los cdigos que generan las
funciones.
function pushbutton1_Callback(hObject, eventdata, handles)
a1 = str2double(get(handles.edit1,'string'));
t1 = str2double(get(handles.edit3,'string'));
n1 = str2double(get(handles.edit4,'string'));
a2 = str2double(get(handles.edit5,'string'));
t2 = str2double(get(handles.edit6,'string'));
n2 = str2double(get(handles.edit7,'string'));

fs = 20/t1;

t = 0:1/fs:1000*t1;
g1 = a1*cos(3*pi*(1/t1)*t);

h1 = (a2/2)*sawtooth(2*pi*(1/t2)*t,0.5)+(a2/2);
h2 = 0.5*square(2*pi*0.5*(1/t2)*(t-0.5/(0.5*(1/t2))))+0.5;
h3 = h1.*h2;
h4 = square(2*pi*0.25*(1/t2)*t);
g2 = h3.*h4;

r = g1.*g2;

n = 2048;
frec = fs/n*(1:n/2);

G1 = abs(fft(g1,n));
G2 = abs(fft(g2,n));
R = abs(fft(r,n));

axes(handles.axes1)
plot(t,g1,'r')
grid on
axis([0 (2/3)*n1*t1 -a1 a1])

axes(handles.axes3)
plot(t,g2,'m')
grid on
axis([0 4*n2*t2 -a2 a2])

axes(handles.axes4)
plot(t,r)
grid on
axis([0 5*t2 -a1*a2 a1*a2])

axes(handles.axes6)
plot(frec,G1(1:n/2))
grid on

axes(handles.axes7)
plot(frec,G2(1:n/2))
grid on
axes(handles.axes5)
plot(frec,R(1:n/2))
grid on

% hObject handle to pushbutton1 (see GCBO)


% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see
GUIDATA)

5) Elaborar un GUI en Matlab, donde se visualice dos seales, una seal cuadrada
simtrica y una seal diente de sierra; de modo que la amplitud y la frecuencia sean
ingresados mediante una barra deslizante. (Nota: Los rangos de amplitud deben ser
de 1 a 10, y los de frecuencia de 10 a 10000).

CODIGO EMPLEADO:

SLIDER1: Lmites establecidos entre 0 y 9.


function slider1_Callback(hObject, eventdata, handles)

A1 = get(handles.slider1,'value') + 1;
F1 = get(handles.slider2,'value') + 10;
fs = 1000*F1;
t = 0:1/fs:0.5;
y1 = A1*square(2*pi*F1*t);
axes(handles.axes1)
plot(handles.axes1,t,y1)
grid on
xlim([0 15/10000])
ylim([-10 10])

SLIDER2: Lmites establecidos entre 0 y 9990.

function slider2_Callback(hObject, eventdata, handles)

A1 = get(handles.slider1,'value') + 1;
F1 = get(handles.slider2,'value') + 10;
fs = 1000*F1;
t = 0:1/fs:0.5;
y1 = A1*square(2*pi*F1*t);
axes(handles.axes1)
plot(handles.axes1,t,y1)
grid on
xlim([0 15/10000])
ylim([-10 10])

SLIDER3: Lmites establecidos entre 0 y 9.


function slider3_Callback(hObject, eventdata, handles)

A2 = get(handles.slider3,'value') + 1;
F2 = get(handles.slider4,'value') + 10;
fs = 1000*F2;
t = 0:1/fs:0.5;
y2 = A2*sawtooth(2*pi*F2*t,0.5);
axes(handles.axes2)
plot(handles.axes2,t,y2)
grid on
xlim([0 15/10000])
ylim([-10 10])

SLIDER4: Lmites establecidos entre 0 y 9990.

function slider4_Callback(hObject, eventdata, handles)

A2 = get(handles.slider3,'value') + 1;
F2 = get(handles.slider4,'value') + 10;
fs = 1000*F2;
t = 0:1/fs:0.5;
y2 = A2*sawtooth(2*pi*F2*t,0.5);
axes(handles.axes2)
plot(handles.axes2,t,y2)
grid on
xlim([0 15/10000])
ylim([-10 10])

Bibliografa:

Ayuda del software computacional Matlab.

Вам также может понравиться