Está en la página 1de 13

1

Informe
Asignatura: Diseño Electrónico
Docente: Luis Enrique Avendaño.
Monitor:Orlando Alfonso Delgado
Universidad Nacional de Colombia - Sede Manizales
Noviembre 2012
Grupo 01
Keyan Cavieles Reina
Yeison Hoyos Reginfo
Mario Garzon Diaz.
Santiago Calle

Abstract—— This lab report is designed to raise awareness of III. M ARCO T E ÓRICO
the procedure for the design of ?lters (Butterworth, Chebyshev,
Cauer) through a graphical interface developed in Matlab by
III-A. Topologı́as
creating an application in which the user can see the different III-A1. Filtro Pasivo: Son aquellos tipos de filtros forma-
responses each ?lter in both time and frequency. dos por combinaciones serie o paralelo de elementos R, L o C.
Palabras Claves—Filtros activos, Filtro de Butterworth, Filtro En general, se tienen los filtros de los siguientes tipos: pasa
de Chebyshev I y II, Filtro El Elı́ptico o de cauer, interfaz gráfica altas,pasa bajas,pasa bandas. Para cada uno de estos filtros
de Matlab (GUI). existen dos zonas principales las cuales son llamadas Banda
de paso y la banda de atenuación. En la banda de paso, es
I. I NTRODUCCI ÓN donde las frecuencias pasan con un máximo de su valor, o
hasta un valor de 70.71con respecto a su original (la cual es
En la vida de ingeniero son fundamentales la imple- la atenuación de –30 dB).
mentación de diversos Filtros en multiples actividades del III-A2. Filtro Activo: Un filtro activo es un filtro elec-
común. Por lo tanto la necesidad de diseñar un filtro que trónico analógico distinguido por el uso de uno o más
cumpla con algunas especificaciones dadas, hace que debamos componentes activos (que proporcionan una cierta forma de
escoger el tipo de filtro mas adecuado a nuestras necesidades. amplificación de energı́a), que lo diferencian de los filtros
En esta practica de laboratorio se pretende crea una aplicación, pasivos que solamente usan componentes pasivos. en ellos
en la que el usuario tenga la posibilidad de escoger entre una que emplean dispositivos activos, por ejemplo los transistores
serie de filtros. Por medio de los procedimientos matemáticos, o los amplificadores operacionales, junto con elementos R
analizar sus respuestas tanto en tiempo como en frecuencia por L C.Tipicamente este elemento activo puede ser un tubo de
medio de diagramas de bode y gráficas. vació, un transistor o un amplificador operacional. Un filtro
activo puede presentar ganancia en toda o parte de la señal de
II. O BJETIVOS salida respecto a la señal de entrada. En su implementación
Diseñar un aplicación que permita obtener el diseño se combinan elementos activos y pasivos, siendo frecuente
de determinados filtros (Butterworth, Chebyshev I y II, el uso de amplificadores operacionales, que permite obtener
El elı́ptico), y visualizar su comportamiento en cada resonancia y un elevado factor Q sin el empleo de bobinas.
proceso. Se pueden implementar, entre otros filtros, pasa bajo, paso
Diseñar una aplicación que permita filtrar señales car- alto, pasa banda, rechaza banda con caracterı́sticas especiales
gadas a la aplicación leı́das de un archivo de texto o de butterworth,chebyshev, entre otros.
audio.
Realizar el diseño de filtros para Butterworth, Chebyshev III-B. Tipos de Filtros
I y II, Elı́ptico, mediante los procedimientos matemáticos En los filtros paso bajo y paso alto, una de sus principales
mostrados en el capitulo 10 (Filtros Activos) del libro caracterı́stica es su frecuencia de corte, que delimita el grupo
guı́a (Sistemas electrónicos analógicos un enfoque ma- de las frecuencias que pasan o no pasan por el filtro. En el filtro
tricial). paso bajo pasaran las frecuencias por debajo de la frecuencia
Realizar los diagrama de flujos para cada uno de los de corte y en el filtro paso alto pasaran las frecuencias por
filtros programados. encima de la frecuencia de corte. En los filtros pasa banda,
Aplicar la teorı́a de diseño de filtros vista en clase las principales caracterı́sticas son: frecuencia central,ancho de
desarrollando un programa que discrimine y filtre una banda y factor de calidad.
determinada banda de frecuencias dada una señal de El filtro rechaza banda, discrimina una determinada frecuen-
audio con una frecuencia especı́fica cia o gama de frecuencias de una señal eléctrica que pasa a
2

través de el, pudiendo modificar tanto su amplitud como su III-C2. Chebyshev: La respuesta en frecuencia de un filtro
fase. chebyshev en pasa bajas normalizado se muestra en la Fig. 2

III-C. Filtros a tratar


III-C1. Butterworth: La función de magnitud cuadrática
de esta clase filtro tiene la forma:

2 H02
|H(jω)| =  2n
ω
1+ ωp

Para el diseño de este filtro primero se calculan los polos de


la función de transferencia de dicho sistema. Donde los polos
se calculan con la siguiente generalización matemática.

pk =σk +jωk
Donde:
σk = − sin 2k−1

2n π
k = 1, 2, 3, ...n Figura 2. Filtro Chebyshev normalizado

y
La función del filtro de chebyshev tiene la siguiente forma
 
2k − 1
ωk = cos π 2 H02
2n |H(jω)| =
1 + ε2 Cn2 (ω)
La representación de los polos es de la forma.

pk = σk + jωk
Donde
σk = − sin(uk ) sinh(v)
ωk = cos(uk ) cosh(v)
Para determinar el orden, se repiten las definiciones dadas
anteriormente, ası́ que:
∆ ωs fs
υ= ωp = fp
q
∆ 0,1ks −1
ψ = 10 100,1kp −1

el orden de la función de chebyshev nc esta dado por:

cosh−1 (ψ)
nc =
Figura 1. Filtro Butterworth según el orden cosh−1 (υ)

Para determinar el orden de la función requerida que reúna


un conjunto dado de especificaciones, se define
∆ ωs fs
υ= ωp = fp

 n
ψ = ωωps

teniendo en cuenta la definición dada para Kp y Ks se tiene


q
∆ H(j0) 2n
kp = 20 log H(jω = 20 log 1 + ω

p)
p
p
∆ H(j0) 2n
ks = 20 log H(jωs ) = 20 log 1 + ωs

para el caso del filtro butterworth, el orden requerido nb sera:


 
log ψ ln ψ
nb = =
log υ ln υ
De esto, se toma el siguiente mayor entero para nb Figura 3. Filtro inverso Chebyshev normalizado
3

III-C3. Inverso de Chebyshev: La respuesta en frecuencia Para la localización de polos y ceros de la función de red
de un filtro inverso de chebyshev en pasa bajas normalizado se utilizan las ecuaciones dadas a continuación definidas:
se muestra en la Fig. 3 Donde la magnitud del inverso de  0,05k 
1 p −1
chebyshev se representa por la Función de magnitud inversa λ = 2n ln 10
100,05ks −1
de Chebyshev


2q1/4 P (−1)m q m(m+1) senh[(2m+1)λ]

2
2 ε Cn2 (1/ω) m=0
|HIC (jω)| = σ0 = ∞

1+ ε2 Cn2 (1/ω) (−1)m q m2 cos h(2mλ)
P
1+2

m=1

localización de los polos y ceros. Solo tenemos en cuenta Ahora calculamos los máximos y mı́nimos de la señal:
que los polos son los recı́procos de los encontrados para s
función de chebyshev. Por lo cual se puede especificar como 
σ2

w = (1 + v)(σ0 )2 1 + 0
1 v
pk = ; k = 1, 2, 3, ...n
σk + jωk Entonces,para k=1,2,3......[n/2].
donde como antes dijimos en la sección anterior,
k = 1, 2, ..., [n/2]
∞  
(2m+1)πµk
uk = 2k−1 2q 1/4 (−1)m q m(m+1) sen
P
2n π
n
m=0
k = 1, 2, 3, ...n  Ωk = ∞
2mπµk
(−1)m q m2 cos(
P
1+2 n )
v = n1 senh−1 1ε m=1

σk = − sin(uk ) sinh(v) Ahora para determinar los coeficientes del numerador y el


ωk = cos(uk ) cosh(v) denominador se debe calcular:
III-C4. Elı́ptico: La respuesta en frecuencia de un filtro
q
Ω2
vk = (1 − vΩ2k )(1 − vk )
elı́ptico en pasa bajas normalizado se muestra en la Fig. 4
Para la determinación del orden de el filtro a desarrollar se b0k = Ω12
k
(σ0 vk)2 +(Ωk w)2
debe citar: a0k = (1+σ02 Ω2k )2
2σ0 vk
ωs fs a1k = 1+σ 2 2
0 Ωk
v= = 1
µk = k − 4 [1 + (−1)n ]
ωp fp
El orden elı́ptico se encuentra determinando las siguientes Ahora la ganancia a frecuencia cero, Ho, se determina con
cantidades: la siguiente expresión:
[n/2]
1−(−1)n
q Y a0k
0,1ks −1
ψ = 10 0,1kp −1 H0 = 10−0,025kp [1+(−1) ] σ0
n
2
√ 10 b0k
υ = 1− v −2 k=1

q0 = 12 1−
1+ υ
√υ Y por ultimo se obtiene la función de transferencia.
q = q0 + 2q05 III-C5. Transformación de la respuesta de los filtros con
2 desmoralización: Para la transformación de la respuesta a
nE = log(16ψ )
log(1/q) los filtros, se debe realizar una sustitución, donde se logra
El orden requerido de la función es el siguiente entero transformar de un filtro pasa bajas normalizado a los diferentes
mayor que nE. filtros desmoralizados con frecuencia de corte omega sub cero
Donde p, es la variable compleja que se va a manejar. y Bw
es el ancho de banda para pasa bandas y rechaza banda.
Pasa bajas a pasa bajas:
p
s=
ω0
Pasa bajas a pasa altas:
ω0
s=
p
Pasa bajas a pasa banda:

(ω02 + p2 )
s=
Bω p
Pasa bajas a rechaza banda:
Bω p
Figura 4. Filtro elı́ptico normalizado s=
(ω02 + p2 )
4

Donde en pasa bajas y pasa altas: Reconocimos que El filtro elı́ptico es un buen filtro
porque casi toma la forma de un filtro ideal su único
ω0 = ωp defecto es que presenta rizados en las bandas de paso
y supresión y sus cálculos son complicados, por eso
en pasa banda
los ingenieros no lo utiliza porque interviene funciones
elı́pticas para calcular el rizado la atenuación de la banda
Bω = ∆ωp
de paso y supresión
Reconocimos que el filtro elı́ptico tiene una similitud

ω0 = ω1 ω2 con el filtro Chebyshev su única diferencia de los dos
filtros es que en la banda de supresión del Chebyshev no
en rechaza banda: presenta un rizado decae rápidamente a cero.
Bω = ∆ωs Pudimos analizar que loos filtros chebyshev y butterworth
√ necesitan un mayor numero de componentes en su
ω0 = ω3 ω4
implementación ya que son para un mayor orden,
contrario a los filtros elı́pticos.
IV. D ESARROLLO DE LA APLICACI ÓN
Implementar los métodos expuestos para el diseño de filtros
analógicos, mediante una interfaz gráfica de Matlab r.

IV-A. Parámetros de entrada

ωp

ωs

Kp

Ks
Tipo de filtro según el método de diseño (Butterworth,
Chebyshev, Chebyshev Inverso, Elı́ptico).
Clase del filtro según la respuesta en frecuencia (Pasa
bajas, Pasa Altas, Pasa Banda, Rechaza Banda).
para el calculo de ganancia y fase deseado
ωn

IV-B. Parámetros de Salida


Bode en magnitud del filtro diseñado
Bode en fase del filtro diseñado
Valor en magnitud y fase del filtro en omega p
Valor en magnitud y fase del filtro en omega s
Valor en magnitud y fase del filtro en omega n

V. C ONCLUSIONES
Se pudo analizar en la practica que dentro de la apli-
cación, se puede observar que a medida que se aumenta
el orden de los filtros la velocidad de respuesta es mas
rápida y la pendiente en la banda de transición baja mas
rápido a cero.
Concluimos con la practica, que cuando aumentamos la
complejidad matemática del filtro se aumenta la precision
en en ancho de las frecuencias que se trabaja, además
que sea bien pasa bajo o pasa altas discriminan mejor
las frecuencias que los caracterizan y se hace mas nı́tido
la señal final generada.
5

VI. C ÓDIGO EN M ATLAB

function varargout = Filtros(varargin)

gui_Singleton = 1; gui_State = struct(’gui_Name’, mfilename,


...
’gui_Singleton’, gui_Singleton, ...
’gui_OpeningFcn’, @Filtros_OpeningFcn, ...
’gui_OutputFcn’, @Filtros_OutputFcn, ...
’gui_LayoutFcn’, [] , ...
’gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% --- Executes just before Filtros is made visible.
function Filtros_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; %Se determinan las variables para los filtros...


set(handles.ws,’String’,1000) set(handles.wp,’String’,900)
set(handles.ks,’String’,20) set(handles.kp,’String’,3)
set(handles.wc,’String’,1050) set(handles.Bw,’String’,100)
% Update handles structure
guidata(hObject, handles);

function varargout = Filtros_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function fileEdit_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function fileEdit_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ws_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ws_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function wp_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function wp_CreateFcn(hObject, eventdata, handles)
6

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ks_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ks_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function kp_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function kp_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

% --- Executes on selection change in filtro.


function filtro_Callback(hObject, eventdata, handles)

op=get(handles.filtro, ’Value’);

if op==1
errordlg(’Debe elegir naturaleza del filtro.’); %Se elige la clase de flitro que se va
a utilizar en ese momento y
set(handles.text2,’Visible’, ’off’); %vuelve visible o no visible lo que se
desea dependiendo de lo escogido.
set(handles.text3,’Visible’, ’off’);
set(handles.text4,’Visible’, ’off’);
set(handles.text5,’Visible’, ’off’);
set(handles.ws,’Visible’, ’off’);
set(handles.wp,’Visible’, ’off’);
set(handles.ks,’Visible’, ’off’);
set(handles.kp,’Visible’, ’off’);
set(handles.generar,’Visible’, ’off’);
else
set(handles.text2,’Visible’, ’on’); %Dependiendo de la elección del filtro
es lo que se visualiza.
set(handles.text3,’Visible’, ’on’);
set(handles.text4,’Visible’, ’on’);
set(handles.text5,’Visible’, ’on’);
7

set(handles.ws,’Visible’, ’on’); orb orc oric ore nub nuc nuic nue deb dec deic
set(handles.wp,’Visible’, ’on’);
set(handles.ks,’Visible’, ’on’);
set(handles.kp,’Visible’, ’on’);
set(handles.generar,’Visible’, ’on’);
end

if op==4 || op==5
set(handles.text16,’Visible’, ’on’);
set(handles.text17,’Visible’, ’on’);
set(handles.wc,’Visible’, ’on’);
set(handles.Bw,’Visible’, ’on’);
else
set(handles.text16,’Visible’, ’off’);
set(handles.text17,’Visible’, ’off’);
set(handles.wc,’Visible’, ’off’);
set(handles.Bw,’Visible’, ’off’);
end
% --- Executes during object creation, after setting all properties.
function filtro_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

% --- Executes on button press in load.


function load_Callback(hObject, eventdata, handles)
global S Fs name t % Variables globales del ejercicio
clc [S,Fs,nb,opts,t,name]=readsignal2(); if (isempty(name))
errordlg(’None file selected’,’Ok’);
else
h = findobj(’Tag’,’fileEdit’); %se carga el archivo de prueba
set(h,’String’,name);
set(handles.senal, ’Visible’,’on’); %Se visualiza el archivo
axes(handles.senal);
plot(S,’r’); %Se visualiza la gráfica de dicha señal cargada
axis ([0 length(S)+1 (min(S))-0.5 (max(S))+0.5]);
grid on;
zoom on;
h=findobj(’Tag’,’filtro’);
set(h, ’Visible’, ’on’);
h=findobj(’Tag’,’text1’);
set(h,’Visible’,’on’);
h=findobj(’Tag’,’uipanel1’);
set(h, ’Visible’, ’on’);
h=findobj(’Tag’,’play’);
set(h,’Visible’,’on’);
end

% --- Executes on button press in generar.


function generar_Callback(hObject, eventdata, handles)

clear fs fp ks ks Fc Bf Hb Hc Hic He nub deb nuc dec nuic deic nue dee... %Se borran
las variables
Tb Tc Tic Te mb mc mic me Wb Wc Wic Web
global filter fs fp ks kp Fc Bf mb mc mic me Wb Wc Wic We ... %Se fijan
variables para los filtros
8

axes(handles.butter) cla axes(handles.cheby1) cla


axes(handles.cheby2) cla axes(handles.cauer) cla

fs=valid(handles.ws,get(handles.ws,’String’));
fp=valid(handles.wp,get(handles.wp,’String’));
ks=valid(handles.ks,get(handles.ks,’String’));
kp=valid(handles.kp,get(handles.kp,’String’));
op=get(handles.filtro,’Value’); if op==4 || op==5
Fc=valid(handles.wc,get(handles.wc,’String’));
Bf=valid(handles.Bw,get(handles.Bw,’String’));
end
if ˜isnumeric(fs) || ˜isnumeric(fp) || ˜isnumeric(ks) || ˜isnumeric(kp) %Mensaje de error
por no ingresar datos
errordlg(’Faltan datos por ingresar.’);
else
[ab,bb]=butterfilter(fs,fp,ks,kp); %Los diferentes filtros expuestos en este programa
[ac,bc]=chebyfilter(fs,fp,ks,kp);
[aic,bic]=invchebyfilter(fs,fp,ks,kp);
[ae,be]=cauerfilter(fs,fp,ks,kp);
switch op

case 2 %Según sea la opción tomada se extienden los


casos con los diferentes filtros
filter=’PasaBajas’;
Fc=fp;
Bf=fp;
[nub,deb]=filttrans(ab,bb,0,fp,Fc,Bf); %Filtro Pasabajas
[nuc,dec]=filttrans(ac,bc,0,fp,Fc,Bf);
[nuic,deic]=filttrans(aic,bic,0,fp,Fc,Bf);
[nue,dee]=filttrans(ae,be,0,fp,Fc,Bf);
Tb=tf(nub,deb);
Tc=tf(nuc,dec);
Tic=tf(nuic,deic);
Te=tf(nue,dee);
[M,phb,Wb] = bode(Tb);
mb=1:length(M);
for i=1:length(Wb)
mb(1,i)=20*log10(M(:,:,i));
end
[M,phc,Wc] = bode(Tc);
mc=1:length(M);
for i=1:length(Wc)
mc(1,i)=20*log10(M(:,:,i)); %Bode de la señal
end
[M,phic,Wic] = bode(Tic);
mic=1:length(M);
for i=1:length(Wic)
mic(1,i)=20*log10(M(:,:,i));
end
[M,phe,We] = bode(Te);
me=1:length(M);
for i=1:length(We)
me(1,i)=20*log10(M(:,:,i));
end
case 3
filter=’Pasaaltas’;
Fc=fp;
9

Bf=fp;
[nub,deb]=filttrans(ab,bb,1,fp,Fc,Bf); %Filtro Pasaaltas
[nuc,dec]=filttrans(ac,bc,1,fp,Fc,Bf);
[nuic,deic]=filttrans(aic,bic,1,fp,Fc,Bf);
[nue,dee]=filttrans(ae,be,1,fp,Fc,Bf);
Tb=tf(nub,deb);
Tc=tf(nuc,dec);
Tic=tf(nuic,deic);
Te=tf(nue,dee);
[M,phb,Wb] = bode(Tb);
mb=1:length(M);
for i=1:length(Wb)
mb(1,i)=20*log10(M(:,:,i));
end
[M,phc,Wc] = bode(Tc);
mc=1:length(M);
for i=1:length(Wc)
mc(1,i)=20*log10(M(:,:,i));
end
[M,phic,Wic] = bode(Tic);
mic=1:length(M);
for i=1:length(Wic)
mic(1,i)=20*log10(M(:,:,i));
end
[M,phe,We] = bode(Te);
me=1:length(M);
for i=1:length(We)
me(1,i)=20*log10(M(:,:,i));
end
case 4
filter=’Pasabandas’;
[nub,deb]=filttrans(ab,bb,2,fp,Fc,Bf); %Filtro Pasabandas
[nuc,dec]=filttrans(ac,bc,2,fp,Fc,Bf);
[nuic,deic]=filttrans(aic,bic,2,fp,Fc,Bf);
[nue,dee]=filttrans(ae,be,2,fp,Fc,Bf);
Tb=tf(nub,deb);
Tc=tf(nuc,dec);
Tic=tf(nuic,deic);
Te=tf(nue,dee);
[M,phb,Wb] = bode(Tb);
mb=1:length(M);
for i=1:length(Wb)
mb(1,i)=20*log10(M(:,:,i));
end
[M,phc,Wc] = bode(Tc);
mc=1:length(M);
for i=1:length(Wc)
mc(1,i)=20*log10(M(:,:,i));
end
[M,phic,Wic] = bode(Tic);
mic=1:length(M);
for i=1:length(Wic)
mic(1,i)=20*log10(M(:,:,i));
end
[M,phe,We] = bode(Te);
me=1:length(M);
for i=1:length(We)
me(1,i)=20*log10(M(:,:,i));
10

end
case 5
filter=’Rechazabandas’;
[nub,deb]=filttrans(ab,bb,3,fp,Fc,Bf); %Filtro Rechazabandas
[nuc,dec]=filttrans(ac,bc,3,fp,Fc,Bf);
[nuic,deic]=filttrans(aic,bic,3,fp,Fc,Bf);
[nue,dee]=filttrans(ae,be,3,fp,Fc,Bf);
Tb=tf(nub,deb);
Tc=tf(nuc,dec);
Tic=tf(nuic,deic);
Te=tf(nue,dee);
[M,phb,Wb] = bode(Tb);
mb=1:length(M);
for i=1:length(Wb)
mb(1,i)=20*log10(M(:,:,i));
end
[M,phc,Wc] = bode(Tc);
mc=1:length(M);
for i=1:length(Wc)
mc(1,i)=20*log10(M(:,:,i));
end
[M,phic,Wic] = bode(Tic);
mic=1:length(M);
for i=1:length(Wic)
mic(1,i)=20*log10(M(:,:,i));
end
[M,phe,We] = bode(Te);
me=1:length(M);
for i=1:length(We)
me(1,i)=20*log10(M(:,:,i));
end
end
end Wb=Wb./(2*pi); Wc=Wc./(2*pi); Wic=Wic./(2*pi); We=We./(2*pi);
set(handles.uipanel2,’Visible’,’on’)
axes(handles.butter); %Visualiza la gráfica del filtro butter
semilogx(Wb, mb); grid on; axis tight;
% zoom on;

axes(handles.cheby1); %Visualiza la gráfica del filtro cheby1


semilogx(Wc, mc); grid on; axis tight;
% zoom on;

axes(handles.cheby2); %Visualiza la gráfica del filtro cheby2


semilogx(Wic, mic); grid on; axis tight;
% zoom on;

axes(handles.cauer); %Visualiza la gráfica del filtro cauer


semilogx(We, me); grid on; axis tight;
% zoom on;
orb=length(deb); orc=length(dec); oric=length(deic);
ore=length(dee);

set(handles.ord_but,’String’,orb);
set(handles.ord_cheb,’String’,orc);
set(handles.ord_icheb,’String’,oric);
set(handles.ord_cau,’String’,ore);
11

% --- Executes on button press in salir.


function salir_Callback(hObject, eventdata, handles)
% resp=questdlg(’Do you really want to exit the program?’,’Exit’,’Yes’,’No’,’No’);
% if strcmp(resp,’No’)
% return;
% else
% clear all;
% fclose all;
% close all;
% end
clear all;
fclose all;
close all; %Cierra programa

function orden_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function orden_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function wc_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function wc_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function Bw_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function Bw_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ord_but_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ord_but_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ord_cheb_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ord_cheb_CreateFcn(hObject, eventdata, handles)
12

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ord_icheb_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ord_icheb_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

function ord_cau_Callback(hObject, eventdata, handles)

% --- Executes during object creation, after setting all properties.


function ord_cau_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),


get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,’white’);
end

% --- Executes on button press in filt_but.


function filt_but_Callback(hObject, eventdata, handles) global
filter fs fp ks kp Fc Bf mb Wb orb nub deb name Fs S t
[Nb,Db]=digfilt(nub,deb,Fs); [Yb]=filtrar(S,t,Nb,Db,Fs);
butter(filter,fs,fp,ks,kp,Fc,Bf,mb,Wb,orb,nub,deb,Yb,name); %Filtro butter

% --- Executes on button press in filt_cheb.


function filt_cheb_Callback(hObject, eventdata, handles) global
filter fs fp ks kp Fc Bf mc Wc orc nuc dec name Fs S t
[Nc,Dc]=digfilt(nuc,dec,Fs); [Yc]=filtrar(S,t,Nc,Dc,Fs);
cheby(filter,fs,fp,ks,kp,Fc,Bf,mc,Wc,orc,nuc,dec,Yc,name);%Filtro cheby

% --- Executes on button press in filt_icheb.


function filt_icheb_Callback(hObject, eventdata, handles) global
filter fs fp ks kp Fc Bf mic Wic oric nuic deic name Fs S t
[Nic,Dic]=digfilt(nuic,deic,Fs); [Yic]=filtrar(S,t,Nic,Dic,Fs);
icheby(filter,fs,fp,ks,kp,Fc,Bf,mic,Wic,oric,nuic,deic,Yic,name);%Filtro icheby o cheby 2

% --- Executes on button press in filt_cauer.


function filt_cauer_Callback(hObject, eventdata, handles) global
filter fs fp ks kp Fc Bf me We ore nue dee name Fs S t
[Ne,De]=digfilt(nue,dee,Fs); [Ye]=filtrar(S,t,Ne,De,Fs);
cauer(filter,fs,fp,ks,kp,Fc,Bf,me,We,ore,nue,dee,Ye,name);%Filtrp cauer

% --- Executes on button press in play.


function play_Callback(hObject, eventdata, handles) global S Fs
sound(S, Fs);

% --------------------------------------------------------------------
function Untitled_1_Callback(hObject, eventdata, handles)
% hObject handle to Untitled_1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
13

% handles structure with handles and user data (see GUIDATA)

% --------------------------------------------------------------------
function Untitled_5_Callback(hObject, eventdata, handles)
msgbox({’Este Programa fue Realizado por:’,’ ’,’Mario Alberto Garzón
Dı́az cod: 808015’,’ ’,’Yeison Hoyos Rengifo cod: 810031’,’ ’,’Keyan
Byyyk Cavieles Reina cod 809014’,’ ’,’Santiago Calle Tobon cod:
00000’,’ ’,’Estudiantes de ingenierı́a Electrónica.’,’
’,},’Integrantes...’)
%menu del programa para mostrar los integrantes

% --------------------------------------------------------------------
function Untitled_2_Callback(hObject, eventdata, handles)
winopen(’practica_5.pdf’)
%abre el archivo de la guia

% --------------------------------------------------------------------
function Untitled_4_Callback(hObject, eventdata, handles)
winopen(’Informe.pdf’)
%abre archivo del informe

% --------------------------------------------------------------------
function Untitled_6_Callback(hObject, eventdata, handles) close all
%cierra todo el programa

R EFERENCIAS
[1] Texto: ”Sistemas Electrónicos Analógicos: Un enfoque Matricial”; L. E.
Avendaño; Universidad Tecnológica de Pereira; 2005, Cap 4.

También podría gustarte