Documentos de Académico
Documentos de Profesional
Documentos de Cultura
211 Matlab-Senales
211 Matlab-Senales
1 Representación de señales
En esta sección vamos a proporcionar las bases para representar gráficamente funcio-
nes con ayuda de Matlab. El caso de mayor interés en la asignatura a la que se refiere este
manual es aquél en el que tales funciones son señales dependientes del tiempo. Es decir, se
trata de obtener gráficas en las que el eje de abscisas corresponde al tiempo, y el eje de or-
denadas indica los valores que toma una determinada magnitud eléctrica (corriente, tensión,
potencia, etcétera) en función del tiempo.
En el primer apartado de la sección indicaremos cómo definir la base de tiempos; en
otras palabras, mostraremos cómo 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 representación básica, y a continuación detallaremos cómo editar la
figura resultante y cómo combinar distintas funciones en una sola gráfica.
En el segundo apartado proporcionaremos unos cuantos códigos de Matlab que pue-
den usarse para representar algunas de las señales más utilizadas en el estudio de sistemas li-
neales. Para cada código detallaremos algunos aspectos particulares que pueden tener rele-
vancia en la representación de otras señales. El tercer y último apartado contiene algunos
ejercicios propuestos que el lector puede intentar resolver para comprobar el grado de asi-
milación de los contenidos de esta sección.
Cabe mencionar que en ninguna parte de este manual se habla de la convolución, pese
a la importancia que tiene esta operación en análisis de sistemas lineales y a que Matlab con-
tiene una instrucción relacionada con ella. Esta ausencia está justificada por el hecho de que
la convolución presenta diferencias cuando se aplica a señales continuas y a discretas. El tra-
tamiento de Matlab corresponde a estas últimas, que no se contemplan en este manual.
Base de tiempos
La definición de la base de tiempos se hace creando un vector que almacena los valo-
res del tiempo para los que se desea obtener una representación de la función. Por ejemplo,
si queremos representar la variación de una función entre -10 s y 10 s, los valores inicial y
final del vector correspondiente a la base de tiempos serán precisamente los que acabamos
de indicar. Idealmente, querríamos que dicho vector fuera un conjunto infinito en el que es-
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
2 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
tuvieran incluidos todos los valores comprendidos entre -10 s y 10 s. De esa forma obten-
dríamos una representación absolutamente precisa de la función. 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 instrucción para definir la base de tiempos es
% valorinicial: primer valor del tiempo para el que queremos representar la función
% intervalo: separación entre dos valores consecutivos del vector base de tiempos
% valorfinal: último valor del tiempo para el que queremos representar la función
La selección del intervalo está condicionada por dos requisitos contrapuestos. Por una
parte, cuanto más pequeño sea, más precisa será la representación de la función; en otras
palabras, la representación tendrá un aspecto más continuo, mientras que, cuanto más gran-
de sea, la representación se parecerá más a un conjunto de puntos (los valores de la función
para los distintos instantes) unidos por líneas. La operación de unir los diferentes puntos de
la representación es ejecutada automáticamente por Matlab. Por otro lado, cuanto más pe-
queño sea el intervalo, más tiempo tardará Matlab en completar la instrucción y mayor es-
pacio de memoria se ocupará en el ordenador. Para intervalos excesivamente pequeños,
que den origen a un gran número de valores en la base, la instrucción puede ser rechazada
por el programa, ya que éste impone un límite máximo (que depende de la versión concre-
ta de Matlab de la que se trate) al número de elementos que puede contener un vector.
Una forma equivalente para definir la base de tiempos consiste en utilizar la instrucción
% valorinicial: primer valor del tiempo para el que queremos representar la función
% valorfinal: último valor del tiempo para el que queremos representar la función
% númeropuntos: número de valores del tiempo incluidos en la base de tiempos
Obsérvese que ambas formas son completamente equivalentes ya que existe una rela-
ción inmediata entre la separación entre dos valores de la base de tiempos y el número de
puntos incluidos en ella. Obviamente, en la instrucción linspace los valores del tiempo están
equiespaciados en la base.
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 3
Antes de continuar conviene precisar que estas formas de definir la base de tiempos se
denominan lineales, ya que la variación 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 serán tratadas más adelante.
Relacionados con la base de tiempos hay otros aspectos que conviene destacar. El pri-
mero de ellos es cómo determinar el número total de valores del tiempo incluidos en la
base. Para ello puede usarse la instrucción
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
4 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
De esta forma tendríamos en el eje de abscisas las posiciones del vector y en el eje de
ordenadas los valores correspondientes a dichas posiciones. Este tipo de representación grá-
fica apenas tiene interés con relación a los objetivos del presente manual.
La forma habitual de representar gráficamente una función consiste en utilizar la ins-
trucción
Con esta instrucción 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 función correspon-
dientes a los diferentes instantes.
En este tipo de representación Matlab intenta presentar al usuario una curva continua
(recuérdese lo indicado más arriba a propósito de la influencia de la selección del intervalo
en la definición de la base de tiempos). Sin embargo, por distintos motivos puede interesar
prescindir de dicha representación continua y obtener en su lugar una representación dis-
creta. En ese caso utilizaríamos la instrucción
Así obtendríamos un conjunto de puntos, denotados por pequeños círculos, tales que
cada uno está definido por un par de valores de t y de y. La representación se completa
con líneas verticales que unen los distintos puntos con el eje de abscisas.
Con lo indicado hasta aquí basta para obtener una representación gráfica de cualquier
función real continua. Sin embargo, en numerosos casos de interés práctico conviene editar
la representación (es decir, alterar algunos aspectos adicionales de la misma) a fin de desta-
car ciertos detalles de aquélla o facilitar su interpretación.
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 5
En principio, Matlab hace las representaciones con línea continua. Pero también es po-
sible conseguir una representación a puntos o a rayas discontinuas de la curva. En ese caso,
la instrucción a utilizar es
También puede variarse el grosor de la línea representativa de la función y(t). Para ello
puede utilizarse la instrucción
Otro elemento de edición es la alteración de los valores extremos que definen los ejes
coordenados. En principio, Matlab establece automáticamente los ejes, adjudicando a sus
extremos los valores extremos de la base de tiempos y de la función. Por ejemplo, si se re-
presenta la variación de una función entre los instantes 2.5 s y 7.3 s y dicha variación está
comprendida entre -1.8 y 3, el eje de abscisas de la representación cubrirá el intervalo 2.5-
7.3 s y el eje de ordenadas, el intervalo -1.8-3. Si se desea alterar los límites de los ejes de
coordenadas puede utilizarse la instrucción
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
6 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
axis ([xo, xn, yo, yn]) % Define los límites extremos de los ejes de coordenadas
% texto: texto que se desea que figure como indicativo del eje
% f: tipo de letra (Helvética, Times, Courier, etcétera)
% s: tamaño de letra (10, 12, 14,... puntos)
Para modificar las características de los números que aparecen en los ejes puede utili-
zarse la instrucción
Con esta instrucción aparece un texto centrado en la parte superior de la figura, fuera
del espacio delimitado por los ejes. Naturalmente, las características particulares de este
texto (tipo, tamaño y color de letra) pueden ser variadas de la misma forma que se indicó
anteriormente para otras instrucciones.
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 7
Otra posibilidad de edición consiste en añadir una malla a la figura. Esto puede conse-
guirse utilizando simplemente la instrucción
Las rectas que definen la malla parten de los puntos de los ejes a los que se ha asigna-
do números en la representación.
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. Además, 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 instrucción
set (gca, ‘xtick’, [x1 x2 ... xn], % Etiqueta los ejes coordenados
‘XTickLabel’, {‘tx1’; ‘tx2’; ... ‘txn’}, % y define una malla
‘ytick’, [y1 y2 ... ym], % especificada por el usuario
‘YTickLabel’, {‘ty1’; ‘ty2’; ... ‘tym}’)
% x1 x2 ... xn: puntos del eje de abscisas de los cuales han de partir las rectas de la malla
% tx1 tx2 ... txn: 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 ty2 ... tym: textos asignados a los puntos del eje de ordenadas
de los cuales han de partir las rectas de la malla
% Esta instrucción ha de ir precedida de la de grid on
Evidentemente, esta instrucción puede incluir las características de las letras (tipo y ta-
maño) que se desean. Para ello basta incluir las especificaciones correspondientes, indicadas
más arriba, a continuación de la especificación de los textos de cada eje.
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
8 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
figure % Permite obtener distintas figuras mediante la ejecución de una sola rutina
Las distintas figuras son presentadas de forma agrupada, de modo que en principio
sólo 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 instrucción
En este caso cada figura desaparece antes de ser presentada la siguiente, pero sólo
cuando el usuario pulsa la tecla de retorno; mientras no lo hace, se mantiene la imagen de la
última figura generada. Para evitar la interacción entre dos programas que contienen esta
instrucción y que se ejecutan secuencialmente conviene cerrar cada uno de ellos con la ins-
trucción
Con esta instrucción todas las curvas generadas durante la ejecución de la rutina se
presentan en una única figura, cuyas características de ejes y enmallado son las definidas
para la representación de la primera curva. A este respecto debe tomarse la precaución de
asegurar previamente que todas las funciones pueden representarse en el cuadrado seleccio-
nado por la definición 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 automática-
mente por Matlab si tal definición no está presente), naturalmente no será representada.
Al igual que ocurría con la instrucción pause conviene terminar el programa con la
instrucción
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 9
Una cuarta posibilidad de visualizar las distintas curvas generadas durante la ejecución
de una rutina consiste en dividir una figura en diversos recuadros y representar una o más
curvas (mediante la aplicación de la instrucción hold on) en cada uno de ellos. La definición
de los recuadros se hace mediante la instrucción
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 función
y(t).
Una posibilidad es la ya comentada en el epígrafe anterior a propósito de la utilización
de la sentencia hold on.
Otra posibilidad consiste en definir cada función por separado (con su correspondiente
base de tiempos, que no tiene por qué ser igual para ambas) y a continuación aplicar las ins-
trucciones
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
10 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Esta instrucción tiene por objeto suprimir de Matlab la información relativa a cualquie-
ra de las variables utilizadas en una determinada rutina, de forma que no se altere inadverti-
damente la ejecución de otra rutina distinta. La sentencia del principio evita la posible in-
fluencia de variables procedentes de otras rutinas.
Coseno
El código adjunto puede utilizarse para generar la función 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 función no es nula.
También conviene destacar que no deben confundirse el periodo de la función (el de
cualquier función periódica), que es t0 en este caso, con el periodo de muestreo para efec-
tuar la representación (lo que hemos denominado intervalo más arriba), que vale 10-9 s en
este caso.
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 11
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 ('Función coseno', 'FontName', 'Times', 'Fontsize', 24) % Título
Función coseno
y = Acos(ωt + ϕ)
ω = 2πf
coseno de periodo T
f = 1/T
0
Datos:
T, A
-A
-T 0 T
t (segundos)
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
12 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Exponenciales reales
El código 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. Obsérvese que se ha utilizado la sentencia subplot para representar las cua-
tro curvas en una sola figura. Obsérvese también que la base de tiempos es única para todas
las figuras.
%%%%% FUNCIONES EXPONENCIALES %%%%%
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 13
A>0 c>0
A A
y = Aexp(ct) 0 0
0 0
t (segundos) t (segundos)
Datos:
c, A 0 0
A<0 c>0
A<0 c<0
A A
0 0
t (segundos) t (segundos)
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
14 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Exponenciales complejas
Las dos primeras curvas muestran la variación con el tiempo de las partes real e imagi-
naria de una función exponencial compleja. Obsérvese que para obtener tales partes se hace
uso de las instrucciones real e imag. Obsérvese también que tal variación 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 parámetros en
la variación con el tiempo de las partes real e imaginaria de una función exponencial com-
pleja. Obsérvese 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-
ción. Obviamente, ambos tipos de representaciones son completamente equivalentes. Obsér-
vese también que en esta rutina aparecen instrucciones de la forma
y = A*exp(sigma*t).*sin(w*t + fase) % Operación elemento a elemento
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 15
'Fontsize', 12);
title ('Exponencial compleja', 'FontName', 'Times', 'Fontsize', 24) % Título
Exponencial compleja
y = Aexp(st)
Parte real
a
A = aejϕ
-a
s = σ + jω
ω = 2πf
0
t
f = 1/T
Parte imaginaria
Datos:
a
a, ϕ, σ, T -a
0
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
16 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 17
hold off;
A = aejϕ
0 0
s = σ + jω t t
Parte imaginaria (sigma > 0)
ω = 2πf
f = 1/T
a a
-a -a
Datos:
a, ϕ, σ, T
0 0
t t
Pulso rectangular
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
18 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Pulso rectangular
Para
- T/2 < t < T/2 A
Amplitud
y=A
Datos:
T, A 0
-T/2 0 T/2
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 19
Pulso triangular
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
20 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Pulso triangular
Para
- T/2 < t < T/2
y=Ax Amplitud A
x (1 - abs(t))/(T/2))
Datos:
T, A
0
-T/2 0 T/2
t
Función escalón
La rutina que sigue permite representar la función escalón. Obsérvese que hay dos po-
sibilidades de definirla; en realidad, una es la función reflejada de la otra (véase más adelante
otro ejemplo de funciones reflejadas). La rutina también permite observar las variaciones de
la representación en función de que el parámetro T sea positivo o negativo. Obsérvese que
la discontinuidad se halla a la izquierda del cero para valores negativos de T y la derecha
para valores positivos.
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 1000;
t = tmin: 1/puntos: tmax;
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 21
T = 2; % Tiempo de discontinuidad
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
22 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
12);
set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsi-
ze', 12);
title ('Escalón u(T - t)', 'FontName', 'Times', 'Fontsize', 24); % Título
Para t < T
A A
T>0
T>0
u(t - T) = 0
u(T - t) = A
0 0
Para t > T
0 T 0 T
u(t - T) = A t t
u(T - t) = 0
Datos:
A A
T<0
T<0
T, A
0 0
T 0 T 0
t t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 23
Signo
% Base de tiempos
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
A = 1;
y = A*sign(t); % Función
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
24 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Función signo
y = Asign(t)
Amplitud
Datos:
0
-A
0
t
Sinc
La función sinc también está disponible directamente en Matlab, con lo que la rutina
que sigue tiene por objeto únicamente establecer las condiciones de la representación.
% Base de tiempos
tmin = -8;
tmax = 8;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
A = 1;
y = A*sinc(t); % Función
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 25
size', 12);
title ('Función sinc', 'FontName', 'Times', 'Fontsize', 24); % Título
Función sinc
y = Asinc(t)
Amplitud
Datos:
A
0
-8 -6 -4 -2 0 2 4 6 8
t
Función combinada
El siguiente ejemplo combina dos funciones en una. A fin de poder utilizar la función
combinada sin necesidad de repetirla en otros momentos, el ejemplo consta de dos rutinas.
La primera es una función que puede ser invocada desde otras rutinas; su ejecución aislada
no produce ningún resultado. La segunda es la presentación de la función 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 función
i = find(t >= 1);
x(i) = -exp(-t(i)) + exp(-t(i) + 1); % Segunda función
return;
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
26 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
Función combinada
Para t > T2
y = - e-t + e-(t-T2)
Amplitud
Datos:
T1, T2
T1 T2
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 27
La rutina siguiente muestra cómo obtener las partes par e impar de una función. La
función considerada es la funccomb que hemos definido más arriba. Obsérvese que hemos
introducido un pequeño desplazamiento vertical en cada una de las curvas representadas a
fin de que puedan ser mostradas todas en la figura.
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
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;
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
28 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
T1 T2
t
La rutina que sigue permite realizar diversas operaciones (reflexión, escalados horizon-
tal y vertical, desplazamiento) con una función, así como combinar todas o algunas de estas
operaciones. La función 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 automático realizado por Matlab permita comprobar el efecto de cada operación.
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 29
tt = -t;
y = funccomb(tt); % Función reflejada
subplot (3, 2, 2); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Función en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Reflexión', '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); % Función con escalado vertical
subplot (3, 2, 3); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Función 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); % Función con escalado horizontal
subplot (3, 2, 4); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Función 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); % Función desplazada
subplot (3, 2, 5); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Función 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); % Operación combinada
subplot (3, 2, 6); % Recuadro
plot (t, y, 'b', 'LineWidth', 2); % Función en azul de grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Combinación', '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
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
30 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
0.8 0.8
Reflexión
0.6 0.6
y(t)
Original
0.4 0.4
0.2 0.2
0 0
y(-t) -0.2 -0.2
-0.4 -0.4
-2 -1 0 1 2 -2 -1 0 1 2
t t
0.4 0.8
Vy(t) Escalado y
Escalado t
0.6
0.2 0.4
0.2
0 0
y(Ht) -0.2
-0.2 -0.4
-2 -1 0 1 2 -2 -1 0 1 2
t t
Desplazamiento
0.8 0.4
y(t + T)
Combinación
0.6
0.4 0.2
0.2
V[-H(t + T)] 0 0
-0.2
-0.4 -0.2
-2 -1 0 1 2 -2 -1 0 1 2
t t
Funciones periódicas
La primera función que vimos en este apartado es periódica (la función coseno). Dicha
función, como otras trigonométricas, tiene una definición establecida en la que la periodici-
dad está implícita. Sin embargo, para otras funciones la periodicidad ha de ser definida ex-
plícitamente. Es el caso, por ejemplo, del paso del pulso rectangular a un tren de pulsos rec-
tangulares. La siguiente rutina ilustra cómo definir esta función periódica.
%%%%% TREN DE PULSOS RECTANGULARES %%%%%
A = 1; % Amplitud
P = 2; % Duración del pulso
T = 6; % Periodo
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 31
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
32 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Amplitud
-T/2 0 T/2
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 33
Amplitud
0
T-Texp T T+Texp
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
34 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab
Amplitud
0
T1 T2 T3 T4
t
0
que permita obtener
las figuras adjuntas. ymin
0 T 2T 3T
t
ymax
Amplitud
ymin
-3T -2T -T 0
t
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO