Prácticas de circuitos como sistemas lineales.

Ejercicios sencillos con Matlab

65

4 Filtros
En esta sección se presentan algunas rutinas de Matlab relativas al papel de los filtros. Recuérdese que, a fin de cuentas, cualquier circuito eléctrico es un filtro, ya que no responde de la misma forma a todas las frecuencias aplicadas a su entrada. En el primer apartado presentamos los cuatro tipos básicos de filtros: paso bajo, paso alto, paso banda, y de banda rechazada (o eliminada). Se indica una rutina distinta para cada tipo. En todos los casos el filtro está caracterizado por su función de transferencia, expresada como el cociente de dos polinomios de la variable s. El usuario ha de definir esta función en las primeras líneas de cada rutina. Hay ligeras diferencias entre las cuatro rutinas, por lo que resulta conveniente elegir la correspondiente al tipo de filtro que se desea considerar. Si no se sabe a priori a qué tipo de filtro corresponde una determinada función de transferencia, el usuario puede hacer una estimación preliminar usando la instrucción freqs. La inspección de la curva de variación del módulo con la frecuencia proporcionada por esta instrucción nos indicará el tipo de filtro del que se trata. Las rutinas presentadas en el primer apartado están básicamente enfocadas a proporcionar representaciones gráficas útiles sobre el comportamiento de filtros. En ese sentido tienen mucho parecido con las presentadas en el apartado 2.3. Lo que añaden de novedoso es la representación de la atenuación introducida por el filtro y, sobre todo, el cálculo de frecuencias importantes (frecuencia central, frecuencias que limitan la banda de paso) para describir el comportamiento de un filtro. El segundo apartado concierne a los filtros con respuesta Butterworth o Chebyshev. Las rutinas contenidas en él permiten diseñar un filtro en función de la respuesta deseada. El diseño empieza siempre con el cálculo del prototipo de filtro paso bajo normalizado. A esta tarea se le dedican dos rutinas específicas, dependiendo de la respuesta elegida por el usuario. En el apartado también se indica cómo pasar del prototipo normalizado al filtro realmente deseado.

4.1 Tipos de filtros
Seguidamente se muestran las rutinas (y los resultados que permiten obtener) correspondientes a los cuatro tipos básicos de filtros.

Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO

'xtick'. 'Times'. L = 0. 'Times'. 'FontName'. 'Fontsize'. 'ytick'. set(gca. 'Fontsize'. 'Times'. 'ytick'. 'Times'. 12). puntos = 10000. % R s H Función de transferencia = 1. 2). 'FontName'. = i*w.66 Prácticas de circuitos como sistemas lineales. ylabel('Fase (º)'. 3). d2. xlabel('Frecuencia angular (rad/s)'. 'Fontsize'. atenuacion. %%%%% % Elimina variables utilizadas en otras rutinas % Rango de frecuencias d1 = 0. 'Fontsize'. atenuacion = -20*log10(modulo). % Elimina las variables utilizadas en esta rutina Dpto. Teoría de la Señal y Comunicaciones. 14). 'Fontsize'. Telecomunicación. 'Fontsize'. semilogx(w. wc = w(n). 'FontName'. set(gca. 'Times'. 'Times'. d2 = 6. semilogx(w. w = logspace(d1. semilogx(w. 24). clear all. 'b'. w(puntos). 14). 'FontName'. 14). 'Fontsize'. 'FontName'. xlabel('Frecuencia angular (rad/s)'. set(gca. ylabel('atenuacion'. 'FontName'. axis([w(1). subplot(3. 'Fontsize'. 'Fontsize'. 'FontName'. -(3/2)*max(abs(fase)). [w(1) wc w(puntos)]. max(atenuacion)]). (3/2)*max(abs(fase))]). 'Times'. 'LineWidth'. n = length(bandapaso). fase = (180/pi)*unwrap(angle(H)). 'LineWidth'. axis([w(1). set(gca. subplot(3. 'Times'. ylabel('Módulo'. set(gca. 12). 1). 'Fontsize'. 12). grid on./(s + (R/L)). Escuela Técnica Superior de Ing. 'b'. 1. 1. title ('Filtro paso bajo'. 1. 'FontName'. 14). Ejercicios sencillos con Matlab %%%%% FILTRO PASO BAJO clear all. 'FontName'. [w(1) wc w(puntos)]. 12). 'FontName'. UNIVERSIDAD DE VIGO . [0 atenuacion(n)]. 14). 2).001. 2). 'b'. % Cálculos modulo = abs(H). axis([w(1). Hc = max(modulo)/sqrt(2). 'Times'. fase. -(1/4)*max(modulo). 'xtick'. 'Times'. puntos). 'FontName'. 'Times'. 'Times'. (3/2)*max(modulo)]). 'FontName'. min(atenuacion). w(puntos). 14). % Representación gráfica subplot(3. w(puntos). 2). 'Fontsize'. xlabel('Frecuencia angular (rad/s)'. 12). [0 Hc max(modulo)]. [w(1) wc w(puntos)]. 'xtick'. bandapaso = find(modulo>=Hc). 'LineWidth'. 'Fontsize'. grid on. modulo. grid on. = (R/L).

3094 1000000 Frecuencia angular (rad/s) Fase (º) 999. Dpto.3094 1000000 Frecuencia angular (rad/s) a = 1000 a H(s) = s + a atenuacion 3. Escuela Técnica Superior de Ing. Finalmente. lo que se obtendría sería el logaritmo neperiano (base e).7071 0 1 999.3094 1000000 Frecuencia angular (rad/s) Obsérvese la forma en la que se ha calculado la frecuencia de corte. Telecomunicación. Teoría de la Señal y Comunicaciones. Dado que aquélla es ignorada a priori. UNIVERSIDAD DE VIGO . Ejercicios sencillos con Matlab 67 Filtro paso bajo Módulo 1 0.Prácticas de circuitos como sistemas lineales. con tal decisión se respeta el numerado automático del eje que efectúa Matlab. También puede notarse que no se etiqueta de forma especial el eje de ordenadas en la representación de la variación de la fase.0073 1 100 50 0 -50 -100 1 999. obsérvese la forma de la instrucción con la que se obtiene el logaritmo en base 10 en el cálculo de la atenuación. si se omitiera la indicación 10.

'b'. 12). 'FontName'. 12). 12). 'Times'. 1. max(atenuacion)]). 1. 'LineWidth'. axis([w(1). puntos). axis([w(1). 'Times'. % Representación gráfica subplot(3. 14). ylabel('atenuacion'. [0 atenuacion(n)]. w(puntos). wc = w(n). 'FontName'. puntos = 10000. [w(1) wc w(puntos)]. [w(1) wc w(puntos)]. UNIVERSIDAD DE VIGO . 2). 24). 'Fontsize'. 'Times'. Telecomunicación. fase = (180/pi)*unwrap(angle(H)). 'FontName'. n = length(bandapaso). 'Fontsize'. set(gca. axis([w(1). d2 = 6. (3/2)*max(modulo)]). fase. 'Times'. 'b'. 'Times'. bandapaso = find(modulo<=Hc). ylabel('Módulo'. 2). 'FontName'. 'FontName'. subplot(3. Ejercicios sencillos con Matlab %%%%% FILTRO PASO ALTO clear all. 14). set(gca. set(gca. 'Times'. 14). 'Times'. 1). 'FontName'. = i*w. (3/2)*max(abs(fase))]). xlabel('Frecuencia angular (rad/s)'. 'Fontsize'. 3). w(puntos). 14). 'Times'. atenuacion = -20*log10(modulo). 12). 'LineWidth'. ylabel('Fase (º)'. 'xtick'. 'FontName'. semilogx(w. % Cálculos modulo = abs(H). -(1/4)*max(modulo). 2). set(gca. grid on. 'FontName'. 'FontName'. 'xtick'. modulo. 'Fontsize'. 1. w = logspace(d1. Escuela Técnica Superior de Ing. 'LineWidth'. semilogx(w. set(gca. % R s H Función de transferencia = 1. grid on. 'FontName'. 'ytick'. 14). 'Times'. 'Fontsize'. 12). [w(1) wc w(puntos)]. 'Times'. grid on. 'xtick'. 'b'. 'ytick'. 'Fontsize'. xlabel('Frecuencia angular (rad/s)'. 'FontName'./(s + (R/L)).68 Prácticas de circuitos como sistemas lineales. semilogx(w. %%%%% % Elimina variables utilizadas en otras rutinas % Rango de frecuencias d1 = 0. title ('Filtro paso alto'. 2). Teoría de la Señal y Comunicaciones. 'Fontsize'. atenuacion. xlabel('Frecuencia angular (rad/s)'. 'Times'. [0 Hc max(modulo)].001. clear all. % Elimina las variables utilizadas en esta rutina Dpto. 'Fontsize'. 'Fontsize'. 'FontName'. 'Times'. d2. = s. 'Fontsize'. -(3/2)*max(abs(fase)). min(atenuacion). subplot(3. 'Fontsize'. Hc = max(modulo)/sqrt(2). L = 0. w(puntos). 'Fontsize'. 14).

3094 1000000 Frecuencia angular (rad/s) Con relación a esta rutina pueden hacerse observaciones similares a las correspondientes al caso del filtro paso bajo.0133 1 100 50 0 -50 -100 1 999. Dpto.7071 0 1 999. UNIVERSIDAD DE VIGO . Telecomunicación.3094 1000000 Frecuencia angular (rad/s) Fase (º) 999. Teoría de la Señal y Comunicaciones.Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 69 Filtro paso alto Módulo 1 0.3094 1000000 Frecuencia angular (rad/s) a = 1000 s H(s) = s + a atenuacion 3. Escuela Técnica Superior de Ing.

1). atenuacion. axis([w(1). 12). [w(1) round(w1) round(w0) round(w2) w(puntos)]. (3/2)*max(abs(fase))]). 'FontName'. Hc = max(modulo)/sqrt(2). 3). 'Fontsize'. 14). 'Fontsize'. ylabel('atenuacion'. 'Times'. 14). 'Times'. 'Times'. % R s H Función de transferencia = 1. %%%%% % Elimina variables utilizadas en otras rutinas % Rango de frecuencias d1 = 1. clear all. 'Fontsize'. subplot(3. C = 0. = (R/L)*s. 'Times'. -(1/4)*max(modulo). max(atenuacion)]).^2 + (R/L)*s + 1/(L*C)). 'Fontsize'. 'FontName'. 'ytick'. 'FontName'. grid on. 'ytick'. 'Fontsize'. 'Times'. 'Fontsize'. bandapaso = find(modulo>=Hc). 14). set(gca. d2. % Elimina las variables utilizadas en esta rutina Dpto. 'Times'. xlabel('Frecuencia angular (rad/s)'. (3/2)*max(modulo)]). 12). title ('Filtro paso banda'. 'FontName'.001. fase = (180/pi)*unwrap(angle(H)). n0 = length(bandapaso0). min(atenuacion). xlabel('Frecuencia angular (rad/s)'. % Cálculos modulo = abs(H). 'FontName'. grid on. [w(1) round(w1) round(w0) round(w2) w(puntos)]. fase. semilogx(w. 'LineWidth'. 'Fontsize'. 'Fontsize'. modulo. 'FontName'.70 Prácticas de circuitos como sistemas lineales. 12). 12). grid on. axis([w(1). 'b'. d2 = 5. semilogx(w. 2). 'Fontsize'. w2 = w(bandapaso(n)). Ejercicios sencillos con Matlab %%%%% FILTRO PASO BANDA clear all. 'Times'. xlabel('Frecuencia angular (rad/s)'. atenuacion = -20*log10(modulo). 2). L = 0. 14). 12). subplot(3. Teoría de la Señal y Comunicaciones. 'Fontsize'. set(gca. 1. [0 Hc max(modulo)]. ylabel('Módulo'. 'FontName'. 1. 'xtick'. 14). Escuela Técnica Superior de Ing. UNIVERSIDAD DE VIGO . w1 = w(bandapaso(1)). 'FontName'. 1. 'Times'. semilogx(w. [0 atenuacion(n0) atenuacion(bandapaso(1))]. set(gca.001. 'FontName'. 'FontName'. 'Times'. 2). 'xtick'. bandapaso0 = find(w<=w0). 'Fontsize'. 14). w0 = sqrt(w1*w2). 'Times'. w(puntos). w = logspace(d1. 'Times'. 'xtick'. 'b'. -(3/2)*max(abs(fase)). 'LineWidth'./(s. [w(1) round(w1) round(w0) round(w2) w(puntos)]. n = length(bandapaso). set(gca. 'b'. ylabel('Fase (º)'. w(puntos). 'Fontsize'. % Representación gráfica subplot(3. axis([w(1). 24). set(gca. w(puntos). puntos). 'FontName'. Telecomunicación. 'FontName'. 'LineWidth'. puntos = 10000. = i*w. 2). 'Times'.

UNIVERSIDAD DE VIGO . Escuela Técnica Superior de Ing. se utiliza la instrucción round (que redondea el argumento al entero más próximo) con objeto de que los valores de las frecuencias particulares estén lo suficientemente separados como para ser leídos. Dpto. Nótese también cómo se calculan las frecuencias que definen la banda de paso del filtro. b = 106 H(s) = s2 as + as + b atenuacion 3.0021 0 10 100 50 0 -50 -100 10 619 10001617 100000 Frecuencia angular (rad/s) Fase (º) 619 10001617 100000 Frecuencia angular (rad/s) Obsérvese la forma particular en la que se especifican los puntos del eje de abscisas que han de ser marcados especialmente. Ejercicios sencillos con Matlab 71 Filtro paso banda Módulo 1 0. Telecomunicación. Teoría de la Señal y Comunicaciones.7071 0 10 619 10001617 100000 Frecuencia angular (rad/s) a = 1000.Prácticas de circuitos como sistemas lineales.

subplot(3. n = length(bandapaso). 'Times'. 1). 'FontName'. 2). bandapaso = find(modulo<=Hc). grid on. (3/2)*max(modulo)]). [0 min(modulo) Hc max(modulo)]. 3). atenuacion = -20*log10(modulo). 1. -(3/2)*max(abs(fase)). w1 = w(bandapaso(1)). Hc = max(modulo)/sqrt(2). semilogx(w. max(atenuacion)]). 'FontName'. bandapaso0 = find(w<=w0).^2 + (R/L)*s + 1/(L*C)). ylabel('Módulo'. 'Fontsize'. 'Fontsize'. = i*w. 'xtick'. xlabel('Frecuencia angular (rad/s)'. Escuela Técnica Superior de Ing. 'Fontsize'. % Elimina las variables utilizadas en esta rutina Dpto. 12). 14). 1. 'Fontsize'. 'FontName'. 14). 'ytick'. set(gca. 1.001./(s. 14). 'Fontsize'.001. 'b'. 2). w = logspace(d1. C = 0. %%%%% % Elimina variables utilizadas en otras rutinas % Rango de frecuencias d1 = 1. 'Times'. 'FontName'. 'LineWidth'. axis([w(1). 12). clear all. L = 0. 'Times'. Ejercicios sencillos con Matlab %%%%% FILTRO DE BANDA RECHAZADA clear all. 2). 'Fontsize'. subplot(3. 'FontName'. grid on. semilogx(w. 14). w2 = w(bandapaso(n)). 'Fontsize'. [w(1) round(w1) round(w0) round(w2) w(puntos)]. 'Times'. 'FontName'. 'xtick'. grid on. = (s. 'Fontsize'. puntos). 'Times'. w(puntos). 'FontName'. 'Fontsize'. 'Times'. axis([w(1). 'FontName'. 12). 'Times'. w0 = sqrt(w1*w2). xlabel('Frecuencia angular (rad/s)'. 12). 'xtick'. xlabel('Frecuencia angular (rad/s)'. 'Times'.^2 + 1/(L*C)). UNIVERSIDAD DE VIGO . 'Fontsize'. puntos = 10000. [w(1) round(w1) round(w0) round(w2) w(puntos)]. 'Times'. 'Fontsize'. atenuacion. 'b'. set(gca. 24). 'ytick'. fase = (180/pi)*unwrap(angle(H)). 12). % Representación gráfica subplot(3. 'Times'. set(gca. n0 = length(bandapaso0).72 Prácticas de circuitos como sistemas lineales. ylabel('Fase (º)'. 'FontName'. -(3/2)*min(modulo). ylabel('atenuacion'. 'b'. [w(1) round(w1) round(w0) round(w2) w(puntos)]. [0 atenuacion(bandapaso(1)) atenuacion(n0)]. 'FontName'. 'Times'. w(puntos). % R s H Función de transferencia = 1. 14). 'Times'. 2). Teoría de la Señal y Comunicaciones. 14). semilogx(w. d2. 'Fontsize'. d2 = 5. fase. min(atenuacion). 'LineWidth'. modulo. title ('Filtro de banda rechazada'. (3/2)*max(abs(fase))]). % Cálculos modulo = abs(H). 'FontName'. set(gca. w(puntos). axis([w(1). set(gca. Telecomunicación. 'LineWidth'. 'FontName'.

7136 619 10001617 100000 Frecuencia angular (rad/s) a = 1000.0185 10 100 50 0 -50 -100 10 619 10001617 100000 Frecuencia angular (rad/s) Fase (º) 619 10001617 100000 Frecuencia angular (rad/s) Con respecto a esta rutina pueden hacerse observaciones similares a las correspondientes a la rutina relativa al filtro paso banda. UNIVERSIDAD DE VIGO . Ejercicios sencillos con Matlab 73 Filtro de banda rechazada Módulo 0.0009 0 10 60. b = 106 H(s) = s2 + b s 2 + as + b atenuacion 3. Dpto. Teoría de la Señal y Comunicaciones.9999 0. Telecomunicación.7071 0.Prácticas de circuitos como sistemas lineales. Escuela Técnica Superior de Ing.

2 Diseño de filtros El diseño de filtros con respuestas Butterworth o Chebyshev (los únicos considerados en este manual) comienza con el diseño de un prototipo de filtro paso bajo normalizado. %%%%% % Elimina variables utilizadas en otras rutinas % Tipo de filtro (1: bajo.74 Prácticas de circuitos como sistemas lineales. wn = w/wc. UNIVERSIDAD DE VIGO . 2: alto. Rg = 50. ws = 5000. Amax = 3./((w/w0) . paso alto. la rutina muestra la variación de la atenuación con la frecuencia. % % % % % % % % Frecuencia de corte (no necesaria si tipo = 3 o tipo = 4) Frecuencia fuera de la banda de paso (> w0 para tipo = 3. wn = ((w/w0) .(w0/ws)). 4) Frecuencia central (no necesaria si tipo = 1 o tipo = 2) Ancho de banda relativo (no necesario si tipo = 1 o tipo = 2) Atenuación máxima en la banda de paso (valor fijo) Atenuación mínima exigida para w = ws Resistencia de generador Resistencia de carga % Rango de frecuencias inicial = 0. 3: banda./w))/bwrel. w0 = 100000. 4: banda rechazada) % Datos de frecuencias (rad/s). atenuaciones a frecuencias dadas.(w0. % Normalización de frecuencias if tipo == 1 wnorm = elseif tipo == wnorm = elseif tipo == wnorm = else wnorm = end ws/wc. La observación de esta figura permite al usuario asegurar que se trata del tipo de filtro en el que está interesado y que cumple las especificaciones sobre atenuación %%%%% PROTOTIPO DE FILTRO NORMALIZADO (Butterworth) clear all. y resistencias de generador y carga. puntos = 10000.(w0./w. Escuela Técnica Superior de Ing.1. wn = bwrel. bwrel/((ws/w0) . Rl = 50. w = logspace(inicial. wn = wc. Teoría de la Señal y Comunicaciones. Tal diseño se efectúa en función de las especificaciones del usuario sobre rangos de frecuencias. atenuaciones (dB) y resistencias (Ω) wc = 1000. Los resultados del diseño del prototipo son el número de elementos que contiene aquél y los valores de tales elementos.(w0/ws))/bwrel. 3 ((ws/w0) . final = 6. paso banda y de banda rechazada)./w)). naturalmente. Seguidamente se muestra una rutina que permite obtener el prototipo de filtro normalizado. Amin = 30. Telecomunicación. 2 wc/ws. Ejercicios sencillos con Matlab 4. tipo = 1. también es preciso especificar el tipo de filtro deseado (paso bajo. El diseño conduce a resultados distintos según que la respuesta deseada sea Butterworth o Chebyshev. puntos). Dpto. Como resultado intermedio. final. bwrel = 0.

2). 'Fontsize'. i = i + 1. xlabel('Frecuencia angular (rad/s)'. 'Fontsize'. else % Número de elementos del prototipo amax = 10^(Amax/10) . end clear all. % Cálculo del prototipo if Rg >= Rl % Estructura del filtro disp('El filtro empieza con un elemento en paralelo') else disp('El filtro empieza con un elemento en serie') end if Rg == Rl % Caso particular (fórmulas de Bennett) i = 1.^(2*n)). alfa = (1 . g(i) = 4*x(i-1)*x(i)/(b(i-1)*g(i-1)). min(A). g(i) = 2*x(1)/(1 . 'LineWidth'. i = 1.K)^(1/(2*n)). x(i) = sin((2*i -1)*pi/(2*n)). end end disp('i ='). i = i + 1. % Elimina las variables utilizadas en esta rutina Dpto. A. semilogx (w. i = 2. 'b'. n = ceil(log10(amin/amax)/(2*log10(wnorm))). while i<=n b(i) = 1 + alfa^2 .Prácticas de circuitos como sistemas lineales. UNIVERSIDAD DE VIGO . while i<=n g(i) = 2*sin((2*i -1)*pi/(2*n)).1. 'FontName'. % Representación gráfica de la atenuación A = 10*log10(1 + wn. disp('g = '). Ejercicios sencillos con Matlab 75 % Realizabilidad del filtro if wnorm <= 1 disp('El filtro no es realizable con las especificaciones indicadas'). Telecomunicación.alfa). disp(1:n).2*alfa*cos(i*pi/n). Escuela Técnica Superior de Ing. 'Times'. 14). ylabel ('Atenuación (dB)'. w(puntos). Teoría de la Señal y Comunicaciones. disp(g). axis([w(1). b(i) = 1 + alfa^2 . (3/2)*max(A)]). amin = 10^(Amin/10) . hold on.2*alfa*cos(i*pi/n). 'Times'.1. 'FontName'. grid on. x(i) = sin((2*i -1)*pi/(2*n)). 14). end else % Caso general (fórmulas de Bossé) K = 4*Rg*Rl/((Rg + Rl)^2).

%%%%% % Elimina variables utilizadas en otras rutinas % Tipo de filtro (1: bajo. para presentar resultados en la ventana de comandos. bwrel = 3. Rl = 75. 4: banda rechazada) % Datos de frecuencias (rad/s). 3: banda. puntos = 10000. w = logspace(inicial. Amax = 3. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. w0 = 100000. 4) Frecuencia central (no necesaria si tipo = 1 o tipo = 2) Ancho de banda relativo (no necesario si tipo = 1 o tipo = 2) Atenuación máxima en la banda de paso (valor fijo) Atenuación mínima exigida para w = ws Resistencia de generador Resistencia de carga % Rango de frecuencias inicial = 0. % % % % % % % % Frecuencia de corte (no necesaria si tipo = 3 o tipo = 4) Frecuencia fuera de la banda de paso (> w0 para tipo = 3. Amin = 50. %%%%% PROTOTIPO DE FILTRO NORMALIZADO (Chebyshev) clear all. final. puntos).76 Prácticas de circuitos como sistemas lineales. ws = 5000. 2: alto. Dpto. en esta rutina se utilizan las instrucciones disp(‘texto’) disp(y) % Presenta el texto utilizado como argumento % Presenta el valor de y La rutina genera los resultados que se presentan seguidamente. Rg = 50. tipo = 1. Telecomunicación. Ejercicios sencillos con Matlab Obsérvese que. final = 6. 250 200 Atenuación (dB) El filtro empieza con un elemento en paralelo i=1 2 3 g=1 2 1 150 100 50 0 0 10 10 1 10 2 10 3 10 4 10 5 10 6 Frecuencia angular (rad/s) La rutina equivalente para el caso de respuesta Chebyshev es la que se muestra seguidamente. atenuaciones (dB) y resistencias (Ω) wc = 1000. UNIVERSIDAD DE VIGO .

Teoría de la Señal y Comunicaciones.(w0. wn = wc. bwrel/((ws/w0) .(w0/ws))/bwrel. wn = ((w/w0) . 2 wc/ws. i = 2. (3/2)*max(A)]). A. disp('en el que las resistencias de generador y de carga son iguales').K)/amax))/n. rango2 = find(wn>1).(w0.1. b(i) = (sinh(alfa))^2 + (sinh(beta))^2 + (sin(i*pi/n))^2 .(w0/ws))./w))/bwrel. A(rango2) = 10*log10(1 + amax*cosh(n*acosh(wn(rango2))).^2). 'FontName'. axis([w(1). beta = asinh(sqrt((1 . else if Rg > Rl % Estructura del filtro disp('El filtro empieza con un elemento en paralelo') else disp('El filtro empieza con un elemento en serie') end K = 4*Rg*Rl/((Rg + Rl)^2). Dpto.2) == 0) & (Rg == Rl)) % Realizabilidad del filtro disp('No es posible obtener un filtro Chebyshev de orden par'). else % Número de elementos del prototipo amax = 10^(Amax/10) . x(i) = sin((2*i -1)*pi/(2*n)). ylabel ('Atenuación (dB)'. Telecomunicación. g(i) = 2*x(i)/(sinh(alfa) . 14). 'Fontsize'.1. % Elementos del prototipo alfa = asinh(sqrt(1/amax))/n./w. 'Times'. 'FontName'. amin = 10^(Amin/10) . 3 ((ws/w0) ./w)). min(A).2*sinh(alfa)*sinh(beta)*cos(i*pi/n). Ejercicios sencillos con Matlab 77 % Normalización de frecuencias if tipo == 1 wnorm = elseif tipo == wnorm = elseif tipo == wnorm = else wnorm = end ws/wc.^2). semilogx (w. n = ceil((acosh(sqrt(amin/amax)))/(acosh(wnorm))). 14). 2). Escuela Técnica Superior de Ing.Prácticas de circuitos como sistemas lineales. 'Fontsize'. 'b'. wn = bwrel. 'LineWidth'. UNIVERSIDAD DE VIGO . % Representación gráfica de la atenuación rango1 = find(wn<=1). wn = w/wc. A(rango1) = 10*log10(1 + amax*cos(n*acos(wn(rango1)))./((w/w0) . hold on. 'Times'. grid on.sinh(beta)). xlabel('Frecuencia angular (rad/s)'. i = 1. % Cálculo del prototipo (fórmulas de Takahasi) if((rem(n. w(puntos). % Realizabilidad del filtro if wnorm <= 1 disp('El filtro no es realizable con las especificaciones indicadas').

disp('g = '). y) % Proporciona el resto de la división de x entre y En la forma empleada en la rutina permite determinar si el número de elementos del prototipo es par (resto nulo) o impar. UNIVERSIDAD DE VIGO . % Elimina las variables utilizadas en esta rutina disp('i ='). Teoría de la Señal y Comunicaciones. end end end clear all. 250 Atenuación (dB) El filtro empieza con un elemento en serie i=1 2 3 g = 4. obtener los valores de las inductancias y capacidades que realmente constituyen en el filtro.1090 200 150 100 50 10 0 10 1 10 2 10 3 10 4 10 5 10 6 Frecuencia angular (rad/s) En las rutinas precedentes el usuario puede modificar los datos correspondientes para que el cálculo se ajuste a lo que realmente desea. Una vez calculados los elementos del prototipo normalizado (sea cual sea la respuesta deseada). es decir. En esta rutina se utiliza la instrucción rem(x. Ejercicios sencillos con Matlab while i<=n b(i) = (sinh(alfa))^2 + (sinh(beta))^2 + (sin(i*pi/n))^2 . disp(g). Telecomunicación. Con esta rutina se obtienen resultados como los mostrados a continuación. i = i + 1.78 Prácticas de circuitos como sistemas lineales. g(i) = 4*x(i-1)*x(i)/(b(i-1)*g(i-1)). Escuela Técnica Superior de Ing. lo que procede es obtener el filtro real.5637 4. Dpto. La rutina que sigue permite realizar tal cálculo. x(i) = sin((2*i -1)*pi/(2*n)). disp(1:n).3069 0.2*sinh(alfa)*sinh(beta)*cos(i*pi/n).

if est == 1 while i<=n C(i) = g(i)/(Rg*wc). if i<n C(i+1) = g(i+1)/(Rg*wc). 2: alto. end i = i + 2. Telecomunicación.6479]. % Resistencia de generador Rl = 50.1. resistencias (Ω) y estructura wc = 2000. UNIVERSIDAD DE VIGO . 3: banda.6457 3. Ejercicios sencillos con Matlab 79 %%%%% CÁLCULO DE LOS ELEMENTOS DE UN FILTRO clear all. end i = i + 2. % Ancho de banda relativo (no necesario si tipo = 1 o tipo = 2) Rg = 60. if i<n L(i+1) = Rg*g(i+1)/wc. % Resistencia de carga est = 1. end else while i<=n L(i) = Rg*g(i)/wc. 4: banda rechazada) % Datos de frecuencias (rad/s). Escuela Técnica Superior de Ing. 2: empieza en serie) % n i g Datos del prototipo de filtro normalizado = 3. end else while i<=n Dpto. end end end if tipo == 2 i = 1. if i<n C(i+1) = 1/(Rg*g(i+1)*wc). C(i) = 0. % Estructura (1: empieza en paralelo. Teoría de la Señal y Comunicaciones.Prácticas de circuitos como sistemas lineales. % Número de elementos del prototipo = 1:n. if est == 1 while i<=n L(i) = Rg/(g(i)*wc). end i = i + 2. tipo = 3. % Frecuencia de corte (no necesaria si tipo = 3 o tipo = 4) w0 = 3000. %%%%% % Elimina variables utilizadas en otras rutinas % Tipo de filtro (1: bajo. end % Cálculo de los elementos if tipo == 1 i = 1. % Elementos del prototipo % Inicialización for i = 1:n L(i) = 0. % Indicativo de los elementos del protipo = [3.7274 0. % Frecuencia central (no necesaria si tipo = 1 o tipo = 2) bwrel = 0.

Ejercicios sencillos con Matlab end end end C(i) = 1/(Rg*g(i)*wc). end else while i<=n L(i) = Rg*g(i)/(bwrel*w0). if i<n L(i+1) = Rg*g(i+1)/(bwrel*w0). if i<n L(i+1) = Rg*bwrel/(g(i+1)*w0). C(i) = 1/(bwrel*Rg*g(i)*w0). C(i) = bwrel*g(i)/(Rg*w0). Teoría de la Señal y Comunicaciones. UNIVERSIDAD DE VIGO . if tipo == 3 i = 1. C(i+1) = g(i+1)/(bwrel*Rg*w0). end end end Dpto. end else while i<=n L(i) = bwrel*Rg*g(i)/w0. if i<n L(i+1) = bwrel*Rg*g(i+1)/w0. C(i) = bwrel/(Rg*g(i)*w0). C(i+1) = 1/(bwrel*Rg*g(i+1)*w0). C(i) = g(i)/(bwrel*Rg*w0). end i = i + 2. Telecomunicación.80 Prácticas de circuitos como sistemas lineales. if i<n L(i+1) = Rg/(g(i+1)*wc). C(i+1) = bwrel/(Rg*g(i+1)*w0). if est == 1 while i<=n L(i) = Rg*bwrel/(g(i)*w0). end end end if tipo == 4 i = 1. if i<n L(i+1) = Rg/(bwrel*g(i+1)*w0). Escuela Técnica Superior de Ing. end i = i + 2. end i = i + 2. if est == 1 while i<=n L(i) = Rg/(bwrel*g(i)*w0). end i = i + 2. end i = i + 2. C(i+1) = bwrel*g(i+1)/(Rg*w0).

0009 0. disp(L). disp('g =').7274 0. disp('C ='). de banda eliminada) del filtro cuya función de transferencia es s s 2 + sR + 1 RC L LC H(s) = 2 s 4 + s 3 R + 1 + 4s + s R + 1 + 1 L RC LC LC L RC L 2C 2 en la que R = 1 Ω.0e-03 * 0.Prácticas de circuitos como sistemas lineales. 5 y 7 Ω). El filtro empieza con un elemento en paralelo i = 1 2 3 g = 3.3 Ejercicios propuestos Ejercicio 13 Determinar el tipo (paso alto.2071 0. Telecomunicación.0005 C = 1.1291 0. Dpto. 3. los valores 1.0005 0.2027 4. % Elimina las variables utilizadas en esta rutina Los resultados que produce esta rutina son como los que se muestran seguidamente. Teoría de la Señal y Comunicaciones. clear all. paso bajo. L = 1 µH y C = 1 µF. disp(C). Escuela Técnica Superior de Ing. disp(1:n).6479 L = 0.6457 3. Ejercicios sencillos con Matlab 81 % Resultados if est == 1 disp('El filtro empieza con un elemento en paralelo') else disp('El filtro empieza con un elemento en serie') end disp('i ='). disp(g). por ejemplo. Obsérvese la influencia de R en la frecuencia a la que se obtiene el máximo del módulo de la función de transferencia y en la anchura de la banda de paso (considérense. disp('L ='). paso banda. UNIVERSIDAD DE VIGO .

Dentro de la banda de paso. Escuela Técnica Superior de Ing. Ejercicios sencillos con Matlab Ejercicio 14 Diseñar un filtro paso banda con respuesta Chebyshev que debe ser insertado entre sendas resistencias de 50 (generador) y 75 Ω (carga). el filtro ha de presentar una atenuación mínima de 70 dB. la atenuación máxima será de 3 dB. Telecomunicación. Para una frecuencia de 30000 rad/s. La frecuencia central del filtro será de 10000 rad/s. Teoría de la Señal y Comunicaciones. y el ancho de banda del 10 %.82 Prácticas de circuitos como sistemas lineales. UNIVERSIDAD DE VIGO . Dpto.

Sign up to vote on this title
UsefulNot useful