Está en la página 1de 34

1 Representacin de seales

En esta seccin vamos a proporcionar las bases para representar grficamente funcio-
nes con ayuda de Matlab. El caso de mayor inters en la asignatura a la que se refiere este
manual es aqul en el que tales funciones son seales dependientes del tiempo. Es decir, se
trata de obtener grficas en las que el eje de abscisas corresponde al tiempo, y el eje de or-
denadas indica los valores que toma una determinada magnitud elctrica (corriente, tensin,
potencia, etctera) en funcin del tiempo.
En el primer apartado de la seccin indicaremos cmo definir la base de tiempos; en
otras palabras, mostraremos cmo establecer el rango de valores de la variable tiempo para
el que interesa representar los valores de la magnitud considerada. Seguiremos exponiendo
la forma de obtener una representacin bsica, y a continuacin detallaremos cmo editar la
figura resultante y cmo combinar distintas funciones en una sola grfica.
En el segundo apartado proporcionaremos unos cuantos cdigos de Matlab que pue-
den usarse para representar algunas de las seales ms utilizadas en el estudio de sistemas li-
neales. Para cada cdigo detallaremos algunos aspectos particulares que pueden tener rele-
vancia en la representacin de otras seales. El tercer y ltimo apartado contiene algunos
ejercicios propuestos que el lector puede intentar resolver para comprobar el grado de asi-
milacin de los contenidos de esta seccin.
Cabe mencionar que en ninguna parte de este manual se habla de la convolucin, pese
a la importancia que tiene esta operacin en anlisis de sistemas lineales y a que Matlab con-
tiene una instruccin relacionada con ella. Esta ausencia est justificada por el hecho de que
la convolucin presenta diferencias cuando se aplica a seales continuas y a discretas. El tra-
tamiento de Matlab corresponde a estas ltimas, que no se contemplan en este manual.
1.1 Elementos bsicos de una representacin grfica
Base de tiempos
La definicin de la base de tiempos se hace creando un vector que almacena los valo-
res del tiempo para los que se desea obtener una representacin de la funcin. Por ejemplo,
si queremos representar la variacin de una funcin entre -10 s y 10 s, los valores inicial y
final del vector correspondiente a la base de tiempos sern precisamente los que acabamos
de indicar. Idealmente, querramos que dicho vector fuera un conjunto infinito en el que es-
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 1
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
tuvieran incluidos todos los valores comprendidos entre -10 s y 10 s. De esa forma obten-
dramos una representacin absolutamente precisa de la funcin. Sin embargo, Matlab no
permite semejante posibilidad, ya que es una herramienta discreta. En consecuencia, a la
hora de definir la base de tiempos hemos de especificar el intervalo entre dos valores conse-
cutivos del tiempo. As, si en el ejemplo que estamos considerando especificamos un inter-
valo de 0.01 s, los valores del tiempo contenidos en el vector de la base de tiempos son -10
s, -9.99 s, -9.98 s,... -0.01 s, 0 s, 0.01 s,... 9.98 s, 9.99 s y 10 s. Teniendo en cuenta estas
consideraciones, la instruccin para definir la base de tiempos es
t = val or i ni ci al : i nt er val o: val or f i nal % Define la base de tiempos
% val or i ni ci al : primer valor del tiempo para el que queremos representar la funcin
% i nt er val o: separacin entre dos valores consecutivos del vector base de tiempos
% val or f i nal : ltimo valor del tiempo para el que queremos representar la funcin
La seleccin del intervalo est condicionada por dos requisitos contrapuestos. Por una
parte, cuanto ms pequeo sea, ms precisa ser la representacin de la funcin; en otras
palabras, la representacin tendr un aspecto ms continuo, mientras que, cuanto ms gran-
de sea, la representacin se parecer ms a un conjunto de puntos (los valores de la funcin
para los distintos instantes) unidos por lneas. La operacin de unir los diferentes puntos de
la representacin es ejecutada automticamente por Matlab. Por otro lado, cuanto ms pe-
queo sea el intervalo, ms tiempo tardar Matlab en completar la instruccin y mayor es-
pacio de memoria se ocupar en el ordenador. Para intervalos excesivamente pequeos,
que den origen a un gran nmero de valores en la base, la instruccin puede ser rechazada
por el programa, ya que ste impone un lmite mximo (que depende de la versin concre-
ta de Matlab de la que se trate) al nmero de elementos que puede contener un vector.
Una forma equivalente para definir la base de tiempos consiste en utilizar la instruccin
t = l i nspace ( val or i ni ci al , val or f i nal , nmer opunt os) % Define la base
% de tiempos
% val or i ni ci al : primer valor del tiempo para el que queremos representar la funcin
% val or f i nal : ltimo valor del tiempo para el que queremos representar la funcin
% nmer opunt os: nmero de valores del tiempo incluidos en la base de tiempos
Obsrvese que ambas formas son completamente equivalentes ya que existe una rela-
cin inmediata entre la separacin entre dos valores de la base de tiempos y el nmero de
puntos incluidos en ella. Obviamente, en la instruccin linspace los valores del tiempo estn
equiespaciados en la base.
2 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Antes de continuar conviene precisar que estas formas de definir la base de tiempos se
denominan lineales, ya que la variacin entre los distintos valores del tiempo incluidos en la
base es lineal. Existen otras formas de variar los valores del tiempo (o de otras variables) en
la base, pero sern tratadas ms adelante.
Relacionados con la base de tiempos hay otros aspectos que conviene destacar. El pri-
mero de ellos es cmo determinar el nmero total de valores del tiempo incluidos en la
base. Para ello puede usarse la instruccin
l engt h ( t ) % Determina la longitud del vector t
% t : vector base de tiempos definido antes de la ejecucin de esta instruccin
Para determinar en qu posicin de la base se encuentra un determinado valor del
tiempo puede usarse la instruccin
p0 = f i nd( t == t 0) % Determina la posicin dentro de la base de tiempos
% en la que se encuentra el valor t0 de t
Esta instruccin debe usarse con precaucin. Dependiendo de la base de tiempos y de
los redondeos internos del ordenador, puede ocurrir que no haya ningn valor de t que
coincida exactamente con t0, con lo cual esta sentencia no producira ningn resultado y las
que vayan a continuacin de ella conduciran a resultados no esperados.
Las posiciones en la base de tiempo estn numeradas automticamente, de forma que
la posicin 1 corresponde al valor inicial y la posicin length(t) corresponde al valor final.
En consecuencia, para determinar el valor del tiempo correspondiente a una determinada
posicin puede utilizarse la instruccin
t ( i ) % Determina el valor de t que se encuentra en la posicin i en la base de tiempos
% i : nmero indicativo de una determinada posicin en la base de tiempos
Representacin de una funcin
La definicin previa de la base de tiempos no es necesaria cuando se quiere represen-
tar una funcin de la forma ms sencilla posible. sta consiste en definir una funcin me-
diante un vector de valores de la funcin y luego hacer la representacin en funcin de las
posiciones que ocupan dichos valores en el vector correspondiente. Es decir, habramos de
ejecutar las instrucciones
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 3
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
y = y1: y2: . . . yn;
pl ot ( y)
% Define un vector de valores de la funcin y
% Representa la funcin
De esta forma tendramos en el eje de abscisas las posiciones del vector y en el eje de
ordenadas los valores correspondientes a dichas posiciones. Este tipo de representacin gr-
fica apenas tiene inters con relacin a los objetivos del presente manual.
La forma habitual de representar grficamente una funcin consiste en utilizar la ins-
truccin
pl ot ( t , y) % Representa la funcin y(t)
% t : base de tiempos definida con anterioridad a la aplicacin de esta instruccin
% y: funcin matemtica definida con anterioridad a la aplicacin de esta instruccin
Con esta instruccin obtenemos los valores del tiempo (no los de posiciones) en el eje
de abscisas, mientras que en el de ordenadas tenemos los valores de la funcin correspon-
dientes a los diferentes instantes.
En este tipo de representacin Matlab intenta presentar al usuario una curva continua
(recurdese lo indicado ms arriba a propsito de la influencia de la seleccin del intervalo
en la definicin de la base de tiempos). Sin embargo, por distintos motivos puede interesar
prescindir de dicha representacin continua y obtener en su lugar una representacin dis-
creta. En ese caso utilizaramos la instruccin
st em( t , y) % Representa nicamente los valores de la funcin y(t)
% correspondientes a los valores del tiempo incluidos en la base
% t : base de tiempos definida con anterioridad a la aplicacin de esta instruccin
% y: funcin matemtica definida con anterioridad a la aplicacin de esta instruccin
As obtendramos un conjunto de puntos, denotados por pequeos crculos, tales que
cada uno est definido por un par de valores de t y de y. La representacin se completa
con lneas verticales que unen los distintos puntos con el eje de abscisas.
Con lo indicado hasta aqu basta para obtener una representacin grfica de cualquier
funcin real continua. Sin embargo, en numerosos casos de inters prctico conviene editar
la representacin (es decir, alterar algunos aspectos adicionales de la misma) a fin de desta-
car ciertos detalles de aqulla o facilitar su interpretacin.
4 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Edicin: caractersticas de la lnea representativa de la funcin
Una posibilidad de edicin consiste en fijar el color de la curva representativa de y(t).
Pueden utilizarse diversos colores, como el negro (k), el azul (b), el amarillo (y), el rojo (r),
el verde (g), etctera. La instruccin correspondiente es
pl ot ( t , y, i ) % Representa la curva con el color i
% i : color elegido para la representacin de una funcin
En principio, Matlab hace las representaciones con lnea continua. Pero tambin es po-
sible conseguir una representacin a puntos o a rayas discontinuas de la curva. En ese caso,
la instruccin a utilizar es
pl ot ( t , y, s ) % Representa la funcin y(t) de forma no continua
% s = . : la lnea es representada a puntos
% s = - - : la lnea es representada con raya discontinua
Tambin puede variarse el grosor de la lnea representativa de la funcin y(t). Para ello
puede utilizarse la instruccin
pl ot ( t , y, Li neWi dt h , i ) % Hace que la lnea representativa de la funcin y(t)
% tenga un grosor de i puntos
% i : grosor (en puntos) de la lnea representativa de la funcin y(t)
A falta de indicacin respecto al grosor a utilizar, Matlab representa la funcin autom-
ticamente con un grosor de 1 punto.
Edicin: ejes coordenados
Otro elemento de edicin es la alteracin de los valores extremos que definen los ejes
coordenados. En principio, Matlab establece automticamente los ejes, adjudicando a sus
extremos los valores extremos de la base de tiempos y de la funcin. Por ejemplo, si se re-
presenta la variacin de una funcin entre los instantes 2.5 s y 7.3 s y dicha variacin est
comprendida entre -1.8 y 3, el eje de abscisas de la representacin cubrir el intervalo 2.5-
7.3 s y el eje de ordenadas, el intervalo -1.8-3. Si se desea alterar los lmites de los ejes de
coordenadas puede utilizarse la instruccin
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 5
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
axi s ( [ xo, xn, yo, yn] ) % Define los lmites extremos de los ejes de coordenadas
% xo xn: valores extremos del eje de abscisas
% yo yn: valores extremos del eje de ordenadas
% Esta instruccin debe ir despus de la instruccin plot
Con la curva representada en la grfica Matlab asigna automticamente los identificati-
vos correspondientes a los ejes de abscisas y de ordenadas (por ejemplo, tiempo y co-
rriente, respectivamente), al igual que lo hace con los nmeros que han de figurar en tales
ejes. Tales identificativos pueden ser modificados mediante la instruccin
xl abel ( t ext o , Font Name , f , Font si ze , s)
yl abel ( t ext o , Font Name , f , Font si ze , s)
% Etiqueta el eje de abscisas
% Etiqueta el eje de ordenadas
% t ext o: texto que se desea que figure como indicativo del eje
% f : tipo de letra (Helvtica, Times, Courier, etctera)
% s: tamao de letra (10, 12, 14,... puntos)
Para modificar las caractersticas de los nmeros que aparecen en los ejes puede utili-
zarse la instruccin
set ( gca, Font Name , f , Font si ze , s) % Cambia las caractersticas
% de los nmeros de los ejes
% f : tipo de letra (Helvtica, Times, Courier, etctera)
% s: tamao de letra (10, 12, 14,... puntos)
El proceso de edicin relativo a los ejes puede completarse aadiendo la instruccin
t i t l e ( t ext o ) % Genera un ttulo para la figura
% t ext o: el texto que se desea que aparezca como ttulo de la figura
Con esta instruccin aparece un texto centrado en la parte superior de la figura, fuera
del espacio delimitado por los ejes. Naturalmente, las caractersticas particulares de este
texto (tipo, tamao y color de letra) pueden ser variadas de la misma forma que se indic
anteriormente para otras instrucciones.
6 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Edicin: enmallado de la figura
Otra posibilidad de edicin consiste en aadir una malla a la figura. Esto puede conse-
guirse utilizando simplemente la instruccin
gr i d on % Introduce una rejilla en la figura
Las rectas que definen la malla parten de los puntos de los ejes a los que se ha asigna-
do nmeros en la representacin.
En ocasiones puede interesarnos tener, no una malla completa, sino una restringida. Es
decir, se trata de marcar determinados puntos especiales en los ejes y hacer que salgan ni-
camente de ellos las rectas de la malla. Adems, podemos querer etiquetar los puntos de los
ejes desde los que parten las rectas de la malla. Ambas funciones pueden realizarse de
forma combinada mediante la instruccin
set ( gca, xt i ck , [ x1 x2 . . . xn] ,
XTi ckLabel , { t x1 ; t x2 ; . . . t xn },
yt i ck , [ y1 y2 . . . ym] ,
YTi ckLabel , { t y1 ; t y2 ; . . . t ym} )
% Etiqueta los ejes coordenados
% y define una malla
% especificada por el usuario
% x1 x2 . . . xn: puntos del eje de abscisas de los cuales han de partir las rectas de la malla
% tx1 t x2 . . . t xn: textos asignados a los puntos del eje de abscisas
de los cuales han de partir las rectas de la malla
% y1 y2 . . . ym: puntos del eje de ordenadas de los cuales han de partir las rectas de la malla
% ty1 t y2 . . . t ym: textos asignados a los puntos del eje de ordenadas
de los cuales han de partir las rectas de la malla
% Esta instruccin ha de ir precedida de la de grid on
Evidentemente, esta instruccin puede incluir las caractersticas de las letras (tipo y ta-
mao) que se desean. Para ello basta incluir las especificaciones correspondientes, indicadas
ms arriba, a continuacin de la especificacin de los textos de cada eje.
Obtencin de distintas curvas con una sola rutina
En principio, si damos a Matlab las instrucciones para representar distintas curvas
como resultado de la ejecucin de una nica rutina, el programa nos presentar slo la lti-
ma. Para poder ver todas las curvas generadas como consecuencia de la ejecucin de la ru-
tina hay distintas posibilidades.
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 7
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
La primera de ellas consiste en utilizar la instruccin
f i gur e % Permite obtener distintas figuras mediante la ejecucin de una sola rutina
% La instruccin ha de insertarse separando los bloques
% correspondientes a las especificaciones de cada representacin
Las distintas figuras son presentadas de forma agrupada, de modo que en principio
slo se ve la ltima. Desplazando el cuadro correspondiente a sta, aparece a la vista la figu-
ra precedente.
Una alternativa a esta posibilidad consiste en utilizar la instruccin
pause on % Genera figuras secuencialmente
% Separa los bloques correspondientes a dos figuras
En este caso cada figura desaparece antes de ser presentada la siguiente, pero slo
cuando el usuario pulsa la tecla de retorno; mientras no lo hace, se mantiene la imagen de la
ltima figura generada. Para evitar la interaccin entre dos programas que contienen esta
instruccin y que se ejecutan secuencialmente conviene cerrar cada uno de ellos con la ins-
truccin
pause of f % Cancela los efectos de instrucciones pause anteriores
Otra posibilidad consiste en utilizar la instruccin
hol d on % Representa diversas funciones en una sola figura
% Ha de ir precedida de la sentencia plot correspondiente a la primera funcin a representar
% Va seguida de las caractersticas de los ejes y del enmallado
Con esta instruccin todas las curvas generadas durante la ejecucin de la rutina se
presentan en una nica figura, cuyas caractersticas de ejes y enmallado son las definidas
para la representacin de la primera curva. A este respecto debe tomarse la precaucin de
asegurar previamente que todas las funciones pueden representarse en el cuadrado seleccio-
nado por la definicin de los ejes (si est presente) correspondientes a la primera figura; si
una de ellas cae fuera del rea de dibujo (la definida por los ejes o la establecida automtica-
mente por Matlab si tal definicin no est presente), naturalmente no ser representada.
Al igual que ocurra con la instruccin pause conviene terminar el programa con la
instruccin
8 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
hol d of f % Cancela los efectos de instrucciones hold on anteriores
Una cuarta posibilidad de visualizar las distintas curvas generadas durante la ejecucin
de una rutina consiste en dividir una figura en diversos recuadros y representar una o ms
curvas (mediante la aplicacin de la instruccin hold on) en cada uno de ellos. La definicin
de los recuadros se hace mediante la instruccin
subpl ot ( f i l as, col umnas, cuadr o) % Divide la figura en recuadros
% y selecciona uno de ellos
% f i l as: nmero de filas de la matriz que constituye el conjunto de recuadros
% col umnas: nmero de columnas de la matriz que constituye el conjunto de recuadros
% cuadr o: nmero identificativo del recuadro seleccionado
% La numeracin de recuadros se hace por filas y luego por columnas
(en una matriz 2 x 2 el recuadro 3 es el correspondiente a la fila 2 y la columna 1)
% Esta instruccin precede a la de plot
Combinacin de diversas funciones en una sola
En ocasiones se desea combinar dos funciones del tiempo en una sola. Por ejemplo,
puede interesarnos combinar las funciones y1 = 3t - 2 e y2 = t + 1 en una nica funcin
y(t).
Una posibilidad es la ya comentada en el epgrafe anterior a propsito de la utilizacin
de la sentencia hold on.
Otra posibilidad consiste en definir cada funcin por separado (con su correspondiente
base de tiempos, que no tiene por qu ser igual para ambas) y a continuacin aplicar las ins-
trucciones
t = [ t 1 t 2 . . . t n] ;
y = [ y1 y2 . . . yn] ;
pl ot ( t , y)
% Combina las bases de tiempo en una sola
% Combina las distintas funciones en una sola
% Representa la funcin combinada
La diferencia entre ambas posibilidades es que la primera permite observar claramente
cualquier discontinuidad que haya entre las funciones que se combinan, mientras que en la
segunda Matlab aade una lnea de conexin entre aqullas, con lo que las discontinuidades
entre ellas, si existen, quedan enmascaradas.
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 9
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
1.2 Algunas funciones de inters en sistemas lineales
A continuacin vamos a presentar los cdigos correspondientes a rutinas que pueden
ser utilizadas para representar funciones continuas del tiempo. El propsito principal de esta
seccin es ilustrar con ejemplos concretos la utilizacin de las instrucciones mencionadas en
la seccin anterior. En consecuencia, se recomienda encarecidamente al lector que examine
detenidamente los distintos cdigos y que se asegure de que entiende por qu se utilizan
unas sentencias y no otras en cada caso concreto. Un ejercicio interesante en este sentido es
tratar de conseguir el mismo objetivo fijado para cada rutina, pero utilizando juegos de ins-
trucciones diferentes.
Por otro lado, es preciso tener en cuenta que, como es obvio, algunas de las sentencias
incluidas en dichos cdigos han de estar presentes obligatoriamente si se desea que tales c-
digos ejecuten las funciones para las que fueron diseados. Sin embargo, otras sentencias (o
partes de sentencias) son de carcter voluntario. Cada programador tiene su propio estilo,
que no necesariamente coincide con el de otras personas, y eso se refleja, entre otras cosas,
en las opciones tomadas para representar figuras (malla, ejes, tamao y tipo de letra, color
de las curvas, etctera). En lo que sigue se aplica un estilo determinado, pero se sugiere al
lector que pruebe a alterar las caractersticas de edicin de las distintas figuras.
Obsrvese, adems, que todos los cdigos empiezan y terminan con la instruccin
cl ear al l % Elimina informacin de todas las variables
Esta instruccin tiene por objeto suprimir de Matlab la informacin relativa a cualquie-
ra de las variables utilizadas en una determinada rutina, de forma que no se altere inadverti-
damente la ejecucin de otra rutina distinta. La sentencia del principio evita la posible in-
fluencia de variables procedentes de otras rutinas.
Coseno
El cdigo adjunto puede utilizarse para generar la funcin coseno mostrada en la figu-
ra. Cabe observar que la curva no pasa por el origen de los ejes coordenados porque la fase
de la funcin no es nula.
Tambin conviene destacar que no deben confundirse el periodo de la funcin (el de
cualquier funcin peridica), que es t0 en este caso, con el periodo de muestreo para efec-
tuar la representacin (lo que hemos denominado intervalo ms arriba), que vale 10
-9
s en
este caso.
10 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
%%%%% COSENO %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
t = -2*10^(-6):10^(-9):2*10^(-6); % Base de tiempos
T = 10^(-6); % Periodo de la funcin
f = 1/T; % Frecuencia de la funcin
w = 2*pi*f; % Frecuencia angular de la funcin
fase = pi/4; % Fase de la funcin
am = 2; % Amplitud de la funcin
y = am*cos(w*t + fase); % Funcin
plot (t, y, 'b', 'LineWidth', 2); % La curva aparece en azul con grosor 2
axis ([-1.5e-6, 1.5e-6, -2.5, 2.5]); % Define el rea de dibujo
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Etiq. abs.
ylabel ('coseno de periodo T', 'FontName', 'Times', 'Fontsize', 14) % Etiq. ord.
set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto ejes
grid on; % Malla
set (gca, 'xtick', [-10^(-6) 0 10^(-6)], 'XTickLabel', {'-T'; '0'; 'T'}, 'FontName',
'Times', 'Fontsize', 12);
set (gca, 'ytick', [-2 0 2], 'YTickLabel', {'-A'; '0'; 'A'});
title ('Funcin coseno', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
y = Acos(t + )
= 2f
f = 1/T
Datos:
T, A
-T 0 T
-A
0
A
Funcin coseno
t (segundos)
c
o
s
e
n
o

d
e

p
e
r
i
o
d
o

T
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 11
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Exponenciales reales
El cdigo adjunto permite obtener los cuatro tipos posibles de exponenciales reales.
Cada exponencial est caracterizada por el coeficiente del exponente y por el coeficiente de
la exponencial. Obsrvese que se ha utilizado la sentencia subplot para representar las cua-
tro curvas en una sola figura. Obsrvese tambin que la base de tiempos es nica para todas
las figuras.
%%%%% FUNCIONES EXPONENCIALES %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
t = linspace (-2, 2, 1000); % Base de tiempos
c = -0.5; % Coeficiente del exponente
A = 2; % Coeficiente de la exponencial
y1 = A*exp(c*t); % Funcin
subplot (2, 2, 1); % Seleccin de recuadro
plot (t, y1, 'b', 'LineWidth', 2); % Curva en azul con grosor 2
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('A > 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas
set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes
grid on; % Malla
axis ([-2, 2, -1, 7]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize',
12);
title ('Exponenciales decrecientes', 'FontName', 'Times', 'Fontsize', 24)% Ttulo
c = 0.5; % Coeficiente del exponente
A = 2; % Coeficiente de la exponencial
y2 = A*exp(c*t); % Funcin
subplot (2, 2, 2); % Seleccin de recuadro
plot (t, y2, 'b', 'LineWidth', 2); % Curva en azul con grosor 2
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('A > 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Ejee ordenadas
set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes
grid on; % Malla
axis ([-2, 2, -1, 7]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize',
12);
title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
c = 0.5; % Coeficiente del exponente
A = -2; % Coeficiente de la exponencial
y3 = A*exp(c*t); % Funcin
12 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
subplot (2, 2, 3); % Seleccin de recuadro
plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('A < 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas
set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes
grid on; % Malla
axis ([-2, 2, -7, 1]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsi-
ze', 12)
c = -0.5; % Coeficiente del exponente
A = -2; % Coeficiente de la exponencial
y3 = A*exp(c*t); % Funcin
subplot (2, 2, 4); % Seleccin de recuadro
plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('A < 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas
set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes
grid on; % Malla
axis ([-2, 2, -7, 1]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
clear all; % Elimina las variables utilizadas en esta rutina
y = Aexp(ct)
Datos:
c, A
0
0
A
t (segundos)
A

>

0



c

<

0
Exponenciales decrecientes
0
0
A
t (segundos)
A

>

0



c

>

0
Exponenciales crecientes
0
A
0
t (segundos)
A

<

0



c

>

0
0
A
0
t (segundos)
A

<

0



c

<

0
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 13
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Exponenciales complejas
Las dos primeras curvas muestran la variacin con el tiempo de las partes real e imagi-
naria de una funcin exponencial compleja. Obsrvese que para obtener tales partes se hace
uso de las instrucciones real e imag. Obsrvese tambin que tal variacin es muy similar en
ambos casos; la nica diferencia significativa es la existencia de un desfase entre ambas re-
presentaciones (se alejan en distinta medida del eje de ordenadas).
Las restantes cuatro curvas muestran la influencia de los signos de los parmetros en
la variacin con el tiempo de las partes real e imaginaria de una funcin exponencial com-
pleja. Obsrvese que en este caso, al contrario que en el anterior, se hace uso de las instruc-
ciones cos y sin, respectivamente, para representar las partes real e imaginaria de una fun-
cin. Obviamente, ambos tipos de representaciones son completamente equivalentes. Obsr-
vese tambin que en esta rutina aparecen instrucciones de la forma
y = A*exp(sigma*t).*sin(w*t + fase) % Operacin elemento a elemento
Mediante el operador .* se multiplican elemento a elemento los componentes de los
dos vectores que figuran en la instruccin. Ms adelante veremos otros casos en los que se
utilizan operadores precedidos por puntos.
%%%%% FUNCIN EXPONENCIAL COMPLEJA (partes real e imaginaria) %%%%%
clear all % Elimina variables utilizadas en otras rutinas
t = -3*10^(-3): 10^(-5): 3*10^(-3) % Base de tiempos
am = 0.5; % Mdulo de la amplitud compleja
fase = pi/4; % Fase de la amplitud compleja
A = am*exp(j*fase); % Amplitud compleja
sigma = 0.5*10^3; % Parte real del coeficiente del exponente
T = 10^(-3); % Periodo de la funcin
f = 1/T; % Frecuencia
w = 2*pi*f; % Frecuencia angular
s = sigma + j*w; % Coeficiente del exponente
y = A*exp(s*t); % Funcin
subplot (2, 1, 1); % Recuadro parte real
plot (t, real(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on
plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('Parte real', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
14 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
'Fontsize', 12);
title ('Exponencial compleja', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
subplot (2, 1, 2); % Recuadro parte imaginaria
plot (t, imag(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on
plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas
ylabel ('Parte imaginaria', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
hold off
clear all; % Elimina las variables utilizadas en esta rutina
y = Aexp(st)
A = ae
j
s = + j
= 2f
f = 1/T
Datos:
a, , , T
0
-a
a
t
P
a
r
t
e

r
e
a
l
Exponencial compleja
0
-a
a
t
P
a
r
t
e

i
m
a
g
i
n
a
r
i
a
%%%%% FUNCIN EXPONENCIAL COMPLEJA (influencia de los parmetros) %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
t = -3*10^(-3): 10^(-5): 3*10^(-3); % Base de tiempos
am = 0.5; % Mdulo de la amplitud compleja
fase = 0; % Fase de la amplitud compleja
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 15
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
A = am*exp(j*fase); % Amplitud compleja
sigma = 0.5*10^3; % Parte real del coeficiente del exponente
T = 10^(-3); % Periodo de la funcin
f = 1/T; % Frecuencia
w = 2*pi*f; % Frecuencia angular
s = sigma + j*w; % Coeficiente del exponente
env = A*exp(sigma*t); % Envolvente superior
y = A*exp(sigma*t).*cos(w*t + fase);% Funcin
subplot (2, 2, 1); % Recuadro parte real
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on;
plot (t, env, 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Parte real (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
sigma = -0.5*10^3; % Parte real del coeficiente del exponente
env = A*exp(sigma*t); % Envolvente superior
y = A*exp(sigma*t).*cos(w*t + fase);% Funcin
subplot (2, 2, 2); % Recuadro parte real
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on;
plot (t, env, 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Parte real (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
title ('Exponenciales amortiguadas', 'FontName', 'Times', 'Fontsize', 24)% Ttulo
sigma = 0.5*10^3; % Parte real del coeficiente del exponente
env = A*exp(sigma*t); % Envolvente superior
y = A*exp(sigma*t).*sin(w*t + fase);% Funcin
subplot (2, 2, 3); % Recuadro parte imaginaria
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on;
plot (t, env, 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Parte imaginaria (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14);% Ord
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
16 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
sigma = -0.5*10^3; % Parte real del coeficiente del exponente
env = A*exp(sigma*t); % Envolvente superior
y = A*exp(sigma*t).*sin(w*t + fase);% Funcin
subplot (2, 2, 4); % Recuadro parte imaginaria
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
hold on;
plot (t, env, 'r'); % Envolvente de la parte superior (en rojo)
plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Parte imaginaria (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ord
grid on; % Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
hold off;
clear all; % Elimina las variables utilizadas en esta rutina
y = Aexp(t) x
x cos(t + )
y = Aexp(t) x
x sen(t + )
A = ae
j
s = + j
= 2f
f = 1/T
Datos:
a, , , T
0
-a
a
t
P
a
r
t
e

r
e
a
l

(
s
i
g
m
a

>

0
)
Exponenciales crecientes
0
-a
a
t
P
a
r
t
e

r
e
a
l

(
s
i
g
m
a

<

0
)
Exponenciales amortiguadas
0
-a
a
t
P
a
r
t
e

i
m
a
g
i
n
a
r
i
a

(
s
i
g
m
a

>

0
)
0
-a
a
t
P
a
r
t
e

i
m
a
g
i
n
a
r
i
a

(
s
i
g
m
a

<

0
)
Pulso rectangular
El cdigo que sigue permite representar un pulso rectangular de amplitud y periodo
dados, centrado en el origen de coordenadas. Se recomienda prestar una atencin especfica
a la forma de definir el intervalo en el que la funcin tiene un valor no nulo.
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 17
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
%%%%% FUNCIN PULSO RECTANGULAR %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
t = -4: 0.001: 4; % Base de tiempos
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
T = 2; % Periodo
% Rango de valores de t para los que la funcin no es nula
rango = find ((t >= -T/2) & (t <= T/2));
y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([-3, 3, -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName',
'Times', 'Fontsize', 12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
title ('Pulso rectangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Para
- T/2 < t < T/2
y = A
Datos:
T, A
-T/2 0 T/2
0
A
t
A
m
p
l
i
t
u
d
Pulso rectangular
18 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Pulso triangular
El cdigo que sigue permite representar un pulso triangular de amplitud y periodo
definidos por el usuario, centrado en el origen de coordenadas.
%%%%% FUNCIN PULSO TRIANGULAR %%%%%
clear all % Elimina variables utilizadas en otras rutinas
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
T = 2; % Periodo
% Rango de valores de t para los que la funcin no es nula
rango = find ((t >= -T/2) & (t <= T/2));
y(rango) = A*(1 - abs(t(rango))/(T/2)); % Funcin en el rango de tiempo no nulo
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([-1.5*T, 1.5*T, -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName',
'Times', 'Fontsize', 12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
title ('Pulso triangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 19
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Para
- T/2 < t < T/2
y = A x
x (1 - abs(t))/(T/2))
Datos:
T, A
-T/2 0 T/2
0
A
t
A
m
p
l
i
t
u
d
Pulso triangular
Funcin escaln
La rutina que sigue permite representar la funcin escaln. Obsrvese que hay dos po-
sibilidades de definirla; en realidad, una es la funcin reflejada de la otra (vase ms adelante
otro ejemplo de funciones reflejadas). La rutina tambin permite observar las variaciones de
la representacin en funcin de que el parmetro T sea positivo o negativo. Obsrvese que
la discontinuidad se halla a la izquierda del cero para valores negativos de T y la derecha
para valores positivos.
%%%%% FUNCIN ESCALN %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 1000;
t = tmin: 1/puntos: tmax;
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
20 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
T = 2; % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula
rango = find (t >= T);
y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 1);
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14);% Ordenadas
grid on; % Malla
axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize',
12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
title ('Escaln u(t - T)', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
T = -2; % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula
rango = find (t >= T);
y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 3);
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('T < 0', 'FontName', 'Times', 'Fontsize', 14);% Ordenadas
grid on; % Malla
axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [T 0], 'XTickLabel', {'T', '0'}, 'FontName', 'Times', 'Fontsize',
12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
T = 2; % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula
rango = find (t <= T);
y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 2);
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14) % Ordenadas
grid on; % Malla
axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize',
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 21
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
title ('Escaln u(T - t)', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
y = zeros (1, length(t)); % Comienza anulando la funcin
A = 1; % Amplitud
T = -2; % Tiempo de discontinuidad
% Rango de valores de t para los que la funcin no es nula
rango = find (t <= T);
y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo
subplot (2, 2, 4);
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('T < 0', 'FontName', 'Time & Ordenadas
grid on; % Malla
axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo
set (gca, 'xtick', [T 0], 'XTickLabel', {'T', '0'}, 'FontName', 'Times', 'Fontsize',
12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
clear all; % Elimina las variables utilizadas en esta rutina
Para t < T
u(t - T) = 0
u(T - t) = A
Para t > T
u(t - T) = A
u(T - t) = 0
Datos:
T, A
0 T
0
A
t
T

>

0
Escaln u(t - T)
T 0
0
A
t
T

<

0
0 T
0
A
t
T

>

0
Escaln u(T - t)
T 0
0
A
t
T

<

0
22 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Signo
La rutina siguiente permite representar la funcin signo. En realidad, la rutina, al igual
que ocurre con la destinada a representar la funcin coseno, no hace ms que establecer las
condiciones de representacin por cuanto la funcin est disponible directamente en Matlab.
Obsrvese que, con relacin a esta funcin, podramos obtener cuatro representaciones dis-
tintas similares a las obtenidas en el caso de la funcin escaln. Obsrvese tambin que en la
representacin grfica aparece una pequea discontinuidad en la lnea vertical, que es debi-
da a que la resolucin utilizada no permite mayor precisin.
%%%%% FUNCIN SIGNO %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
A = 1;
y = A*sign(t); % Funcin
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -2*A, 2*A]); % rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-A 0 A], 'YTickLabel', {' -A'; ' 0'; ' A'}, 'FontName', 'Ti-
mes', 'Fontsize', 12);
title ('Funcin signo', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 23
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
y = Asign(t)
Datos:
A
0
-A
0
A
t
A
m
p
l
i
t
u
d
Funcin signo
Sinc
La funcin sinc tambin est disponible directamente en Matlab, con lo que la rutina
que sigue tiene por objeto nicamente establecer las condiciones de la representacin.
%%%%% FUNCIN SINC %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
% Base de tiempos
tmin = -8;
tmax = 8;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
A = 1;
y = A*sinc(t); % Funcin
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([tmin, tmax, -(1/2)*A, (5/4)*A]); % rea de dibujo
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Font-
24 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
size', 12);
title ('Funcin sinc', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
y = Asinc(t)
Datos:
A
-8 -6 -4 -2 0 2 4 6 8
0
A
t
A
m
p
l
i
t
u
d
Funcin sinc
Funcin combinada
El siguiente ejemplo combina dos funciones en una. A fin de poder utilizar la funcin
combinada sin necesidad de repetirla en otros momentos, el ejemplo consta de dos rutinas.
La primera es una funcin que puede ser invocada desde otras rutinas; su ejecucin aislada
no produce ningn resultado. La segunda es la presentacin de la funcin combinada.
function x = funccomb(t)
n = length(t);
x = zeros(1,n);
i = find(t < 0);
x(i) = 0;
i = find(t > 0 & t < 1);
x(i) = 1 - exp (-t(i)); % Primera funcin
i = find(t >= 1);
x(i) = -exp(-t(i)) + exp(-t(i) + 1); % Segunda funcin
return;
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 25
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
%%%%% FUNCIN COMBINADA %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienzo de la primera funcin
T2 = 1; % Comienzo de la segunda funcin
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t); % Llama a la funcin combinada
plot (t, y, 'b', 'LineWidth', 2);
% Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(1/3)*max(y), (3/2)*max(y)]); % rea de dibujo
set (gca, 'xtick', [T1 T2], 'XTickLabel', {'T1'; 'T2'}, 'FontName', 'Times', 'Font-
size', 12);
set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12);
title ('Funcin combinada', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Para T1 < t < T2
y = 1 - e
-(t-T1)
Para t > T2
y = - e
-t
+ e
-(t-T2)
Datos:
T1, T2
T1 T2
0
t
A
m
p
l
i
t
u
d
Funcin combinada
26 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Partes par e impar de una funcin
La rutina siguiente muestra cmo obtener las partes par e impar de una funcin. La
funcin considerada es la funccomb que hemos definido ms arriba. Obsrvese que hemos
introducido un pequeo desplazamiento vertical en cada una de las curvas representadas a
fin de que puedan ser mostradas todas en la figura.
%%%%% PARTES PAR E IMPAR DE UNA FUNCIN %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienzo de la primera funcin
T2 = 1; % Comienzo de la segunda funcin
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t) + 0.02; % Funcin original
plot (t, y, 'k'); % Funcin en negro
hold on;
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Funcin (negro), Par (rojo), Impar (verde), Suma (azul)', 'FontName', 'Ti-
mes', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
set (gca, 'xtick', [T1 T2], 'XTickLabel', {'T1'; 'T2'}, 'FontName', 'Times', 'Font-
size', 12);
set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12);
tt = -t;
yy = funccomb(tt);
ypar = 0.005 + (y + yy)/2; % Parte par
plot (t, ypar, 'r');
hold on;
yimpar = (y - yy)/2 - 0.005; % Parte impar
plot (t, yimpar, 'g');
hold on;
ytotal = ypar + yimpar - 0.02;
plot (t, ytotal, 'b', 'Linewidth', 2); % Suma en azul de grosor 2
hold off;
title ('Partes par e impar de una funcin', 'FontName', 'Times', 'Fontsize', 24);
% Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 27
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
T1 T2
0
t
F
u
n
c
i

n

(
n
e
g
r
o
)
,

P
a
r

(
r
o
j
o
)
,

I
m
p
a
r

(
v
e
r
d
e
)
,

S
u
m
a

(
a
z
u
l
)
Partes par e impar de una funcin
Reflexin, desplazamiento y escalado de una funcin
La rutina que sigue permite realizar diversas operaciones (reflexin, escalados horizon-
tal y vertical, desplazamiento) con una funcin, as como combinar todas o algunas de estas
operaciones. La funcin elegida como ejemplo es la funccomb descrita anteriormente. En
este caso, al contrario que en los precedentes, no se han etiquetado los ejes, a fin de que el
etiquetado automtico realizado por Matlab permita comprobar el efecto de cada operacin.
%%%%% OPERACIONES CON UNA FUNCIN %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienza la primera funcin
T2 = 1; % Comienza la segunda funcin
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t); % Funcin original
subplot (3, 2, 1); % Recuadro
28 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Original', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
tt = -t;
y = funccomb(tt); % Funcin reflejada
subplot (3, 2, 2); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Reflexin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
V = 0.5;
y = V*funccomb(t); % Funcin con escalado vertical
subplot (3, 2, 3); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Escalado y', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
H = 2;
tt = H*t;
y = funccomb(tt); % Funcin con escalado horizontal
subplot (3, 2, 4); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Escalado t', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
T = 1;
tt = t+T;
y = funccomb(tt); % Funcin desplazada
subplot (3, 2, 5); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Desplazamiento', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
T = 1;
V = 0.5;
H = 2;
tt = H*(-(t+T));
y = V*funccomb(tt); % Operacin combinada
subplot (3, 2, 6); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Combinacin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo
clear all; % Elimina las variables utilizadas en esta rutina
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 29
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
y(t)
y(-t)
Vy(t)
y(Ht)
y(t + T)
V[-H(t + T)]
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
O
r
i
g
i
n
a
l
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
R
e
f
l
e
x
i

n
-2 -1 0 1 2
-0.2
0
0.2
0.4
t
E
s
c
a
l
a
d
o

y
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
E
s
c
a
l
a
d
o

t
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
D
e
s
p
l
a
z
a
m
i
e
n
t
o
-2 -1 0 1 2
-0.2
0
0.2
0.4
t
C
o
m
b
i
n
a
c
i

n
Funciones peridicas
La primera funcin que vimos en este apartado es peridica (la funcin coseno). Dicha
funcin, como otras trigonomtricas, tiene una definicin establecida en la que la periodici-
dad est implcita. Sin embargo, para otras funciones la periodicidad ha de ser definida ex-
plcitamente. Es el caso, por ejemplo, del paso del pulso rectangular a un tren de pulsos rec-
tangulares. La siguiente rutina ilustra cmo definir esta funcin peridica.
%%%%% TREN DE PULSOS RECTANGULARES %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
A = 1; % Amplitud
P = 2; % Duracin del pulso
T = 6; % Periodo
tmin = -7*P; % Base de tiempos
tmax = 7*P;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
y = zeros (1, length(t)); % Anula la funcin
30 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
n = 0; % Nmero de periodos para t < 0
while n*T>tmin
n = n - 1;
end
tc1 = (n: 0)*T; % Instantes centrales de los pulsos
m = 1; % Nmero de periodos para t > 0
while m*T<tmax
m = m + 1;
end
tc2 = (0: m)*T; % Instantes centrales de los pulsos
tc = [tc1 tc2]; % Instantes centrales de todos los pulsos
k = 1; % Amplitud de cada pulso
while k<=length(tc)
rango = find((t >= tc(k) - P/2) & (t <= tc(k) + P/2));
y(rango) = A;
k = k + 1;
end
plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas
grid on; % Malla
axis ([tmin, tmax, -A/3, (3/2)*A]); % rea de dibujo
set (gca, 'xtick', [-T/2 -P/2 0 P/2 T/2], 'XTickLabel', {'-T/2'; '-P/2'; '0'; 'P/2';
'T/2'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Font-
size', 12);
title ('Tren de pulsos rectangulares', 'FontName', 'Times', 'Fontsize', 24);
% Ttulo
clear all; % Elimina las variables utilizadas en esta rutina
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 31
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
-T/2 -P/2 0 P/2 T/2
0
A
t
A
m
p
l
i
t
u
d
Tren de pulsos rectangulares
1.3 Ejercicios propuestos
Ejercicio 1
Escribir un cdigo Matlab
que permita obtener
la figura adjunta.
-T/2 0 T/2
0
A
t
A
m
p
l
i
t
u
d
Rectificacin de onda completa
32 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Ejercicio 2
Escribir un cdigo Matlab
que permita obtener
la figura adjunta.
-T/2 -P/2 0 P/2 T/2
0
A
t
A
m
p
l
i
t
u
d
Rectificacin de media onda
Ejercicio 3
Escribir un cdigo Matlab
que permita obtener
la figura adjunta.
T-Texp T T+Texp
0
A
t
A
m
p
l
i
t
u
d
Sucesin de pulsos exponenciales
Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 33
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO
Ejercicio 4
Escribir un cdigo Matlab
que permita obtener
la figura adjunta.
T1 T2 T3 T4
0
A
t
A
m
p
l
i
t
u
d
Pulso trapezoidal
Ejercicio 5
Escribir un cdigo Matlab
que permita obtener
las figuras adjuntas.
0 T 2T 3T
ymin
0
ymax
t
A
m
p
l
i
t
u
d
Funcin combinada
-3T -2T -T 0
ymin
0
ymax
t
A
m
p
l
i
t
u
d
34 Prcticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teora de la Seal y Comunicaciones. Escuela Tcnica Superior de Ing. Telecomunicacin. UNIVERSIDAD DE VIGO

También podría gustarte