SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
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.
1.1 Elementos básicos de una representación gráfica
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-
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 1
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
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
t = valorinicial: intervalo: valorfinal % Define la base de tiempos
% 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
t = linspace (valorinicial, valor final, númeropuntos) % Define la base
% de tiempos
% 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.
2 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
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
length (t) % Determina la longitud del vector t
% t: vector base de tiempos definido antes de la ejecución de esta instrucción
Para determinar en qué posición de la base se encuentra un determinado valor del
tiempo puede usarse la instrucción
p0 = find(t == t0) % Determina la posición dentro de la base de tiempos
% en la que se encuentra el valor t0 de t
Esta instrucción debe usarse con precaución. Dependiendo de la base de tiempos y de
los redondeos internos del ordenador, puede ocurrir que no haya ningún valor de t que
coincida exactamente con t0, con lo cual esta sentencia no produciría ningún resultado y las
que vayan a continuación de ella conducirían a resultados no esperados.
Las posiciones en la base de tiempo están numeradas automáticamente, de forma que
la posición 1 corresponde al valor inicial y la posición length(t) corresponde al valor final.
En consecuencia, para determinar el valor del tiempo correspondiente a una determinada
posición puede utilizarse la instrucción
t(i) % Determina el valor de t que se encuentra en la posición i en la base de tiempos
% i: número indicativo de una determinada posición en la base de tiempos
Representación de una función
La definición previa de la base de tiempos no es necesaria cuando se quiere represen-
tar una función de la forma más sencilla posible. Ésta consiste en definir una función me-
diante un vector de valores de la función y luego hacer la representación en función de las
posiciones que ocupan dichos valores en el vector correspondiente. Es decir, habríamos de
ejecutar las instrucciones
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 3
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
y = y1:y2:...yn;
plot (y)
% Define un vector de valores de la función y
% Representa la función
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
plot (t, y) % Representa la función y(t)
% t: base de tiempos definida con anterioridad a la aplicación de esta instrucción
% y: función matemática definida con anterioridad a la aplicación de esta instrucció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
stem (t, y) % Representa únicamente los valores de la función y(t)
% correspondientes a los valores del tiempo incluidos en la base
% t: base de tiempos definida con anterioridad a la aplicación de esta instrucción
% y: función matemática definida con anterioridad a la aplicación de esta 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.
4 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
Edición: características de la línea representativa de la función
Una posibilidad de edición 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), etcétera. La instrucción correspondiente es
plot (t, y, ‘i’) % Representa la curva con el color i
% i: color elegido para la representación de una función
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
plot (t, y, ‘s’) % Representa la función y(t) de forma no continua
% s = .: la línea es representada a puntos
% s = --: la línea es representada con raya discontinua
También puede variarse el grosor de la línea representativa de la función y(t). Para ello
puede utilizarse la instrucción
plot (t, y, ‘LineWidth’, i) % Hace que la línea representativa de la función y(t)
% tenga un grosor de i puntos
% i: grosor (en puntos) de la línea representativa de la función y(t)
A falta de indicación respecto al grosor a utilizar, Matlab representa la función automá-
ticamente con un grosor de 1 punto.
Edición: ejes coordenados
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
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 5
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
axis ([xo, xn, yo, yn]) % Define los límites extremos de los ejes de coordenadas
% xo xn: valores extremos del eje de abscisas
% yo yn: valores extremos del eje de ordenadas
% Esta instrucción debe ir después de la instrucción plot
Con la curva representada en la gráfica Matlab asigna automáticamente 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 números que han de figurar en tales
ejes. Tales identificativos pueden ser modificados mediante la instrucción
xlabel (‘texto’, ‘FontName’, ‘f’, ‘Fontsize’, s)
ylabel (‘texto’, ‘FontName’, ‘f’, ‘Fontsize’, s)
% Etiqueta el eje de abscisas
% Etiqueta el eje de ordenadas
% 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
set (gca, ‘FontName’, ‘f’, ‘Fontsize’, s) % Cambia las características
% de los números de los ejes
% f: tipo de letra (Helvética, Times, Courier, etcétera)
% s: tamaño de letra (10, 12, 14,... puntos)
El proceso de edición relativo a los ejes puede completarse añadiendo la instrucción
title (‘texto’) % Genera un título para la figura
% texto: el texto que se desea que aparezca como título de la figura
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.
6 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
Edición: enmallado de la figura
Otra posibilidad de edición consiste en añadir una malla a la figura. Esto puede conse-
guirse utilizando simplemente la instrucción
grid 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 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],
‘XTickLabel’, {‘tx1’; ‘tx2’; ... ‘txn’},
‘ytick’, [y1 y2 ... ym],
‘YTickLabel’, {‘ty1’; ‘ty2’; ... ‘tym}’)
% 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 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.
Obtención de distintas curvas con una sola rutina
En principio, si damos a Matlab las instrucciones para representar distintas curvas
como resultado de la ejecución de una única rutina, el programa nos presentará sólo la últi-
ma. Para poder ver todas las curvas generadas como consecuencia de la ejecución de la ru-
tina hay distintas posibilidades.
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 7
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
La primera de ellas consiste en utilizar la instrucción
figure % Permite obtener distintas figuras mediante la ejecución de una sola rutina
% La instrucción ha de insertarse separando los bloques
% correspondientes a las especificaciones de cada representación
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
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 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
pause off % Cancela los efectos de instrucciones pause anteriores
Otra posibilidad consiste en utilizar la instrucción
hold on % Representa diversas funciones en una sola figura
% Ha de ir precedida de la sentencia plot correspondiente a la primera función a representar
% Va seguida de las características de los ejes y del enmallado
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
8 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
hold off % Cancela los efectos de instrucciones hold on anteriores
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
subplot (filas, columnas, cuadro) % Divide la figura en recuadros
% y selecciona uno de ellos
% filas: número de filas de la matriz que constituye el conjunto de recuadros
% columnas: número de columnas de la matriz que constituye el conjunto de recuadros
% cuadro: número identificativo del recuadro seleccionado
% La numeración 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 instrucción precede a la de plot
Combinación 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 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
t = [t1 t2 ... tn];
y = [y1 y2 ... yn];
plot (t, y)
% Combina las bases de tiempo en una sola
% Combina las distintas funciones en una sola
% Representa la función 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 añade una línea de conexión entre aquéllas, con lo que las discontinuidades
entre ellas, si existen, quedan enmascaradas.
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 9
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
1.2 Algunas funciones de interés en sistemas lineales
A continuación vamos a presentar los códigos correspondientes a rutinas que pueden
ser utilizadas para representar funciones continuas del tiempo. El propósito principal de esta
sección es ilustrar con ejemplos concretos la utilización de las instrucciones mencionadas en
la sección anterior. En consecuencia, se recomienda encarecidamente al lector que examine
detenidamente los distintos códigos 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 códigos han de estar presentes obligatoriamente si se desea que tales có-
digos ejecuten las funciones para las que fueron diseñados. Sin embargo, otras sentencias (o
partes de sentencias) son de carácter 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, tamaño y tipo de letra, color
de las curvas, etcétera). En lo que sigue se aplica un estilo determinado, pero se sugiere al
lector que pruebe a alterar las características de edición de las distintas figuras.
Obsérvese, además, que todos los códigos empiezan y terminan con la instrucción
clear all % Elimina información de todas las variables
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.
10 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
%%%%% 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 función
f = 1/T; % Frecuencia de la función
w = 2*pi*f; % Frecuencia angular de la función
fase = pi/4; % Fase de la función
am = 2; % Amplitud de la función
y = am*cos(w*t + fase); % Función
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
clear all; % Elimina las variables utilizadas en esta rutina
y = Acos(ωt + ϕ)
ω = 2πf
f = 1/T
Datos:
T, A
-T 0 T
-A
0
A
Función coseno
t (segundos)
cosenodeperiodoT
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 11
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
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 %%%%%
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); % Función
subplot (2, 2, 1); % Selección 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)% Título
c = 0.5; % Coeficiente del exponente
A = 2; % Coeficiente de la exponencial
y2 = A*exp(c*t); % Función
subplot (2, 2, 2); % Selección 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) % Título
c = 0.5; % Coeficiente del exponente
A = -2; % Coeficiente de la exponencial
y3 = A*exp(c*t); % Función
12 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
subplot (2, 2, 3); % Selección 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); % Función
subplot (2, 2, 4); % Selección 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>0c<0
Exponenciales decrecientes
0
0
A
t (segundos)
A>0c>0
Exponenciales crecientes
0
A
0
t (segundos)
A<0c>0
0
A
0
t (segundos)
A<0c<0
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 13
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
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
Mediante el operador .* se multiplican elemento a elemento los componentes de los
dos vectores que figuran en la instrucción. Más adelante veremos otros casos en los que se
utilizan operadores precedidos por puntos.
%%%%% FUNCIÓN 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; % Módulo 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 función
f = 1/T; % Frecuencia
w = 2*pi*f; % Frecuencia angular
s = sigma + j*w; % Coeficiente del exponente
y = A*exp(s*t); % Función
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 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
'Fontsize', 12);
title ('Exponencial compleja', 'FontName', 'Times', 'Fontsize', 24) % Título
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 = aejϕ
s = σ + jω
ω = 2πf
f = 1/T
Datos:
a, ϕ, σ, T
0
-a
a
t
Partereal
Exponencial compleja
0
-a
a
t
Parteimaginaria
%%%%% FUNCIÓN EXPONENCIAL COMPLEJA (influencia de los parámetros) %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
t = -3*10^(-3): 10^(-5): 3*10^(-3); % Base de tiempos
am = 0.5; % Módulo de la amplitud compleja
fase = 0; % Fase de la amplitud compleja
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 15
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. 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 función
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);% Función
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) % Título
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);% Función
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)% Título
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);% Función
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 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
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);% Función
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 = aejϕ
s = σ + jω
ω = 2πf
f = 1/T
Datos:
a, ϕ, σ, T
0
-a
a
t
Partereal(sigma>0)
Exponenciales crecientes
0
-a
a
t
Partereal(sigma<0)
Exponenciales amortiguadas
0
-a
a
t
Parteimaginaria(sigma>0)
0
-a
a
t
Parteimaginaria(sigma<0)
Pulso rectangular
El código que sigue permite representar un pulso rectangular de amplitud y periodo
dados, centrado en el origen de coordenadas. Se recomienda prestar una atención específica
a la forma de definir el intervalo en el que la función tiene un valor no nulo.
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 17
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
%%%%% FUNCIÓN 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 función
A = 1; % Amplitud
T = 2; % Periodo
% Rango de valores de t para los que la función no es nula
rango = find ((t >= -T/2) & (t <= T/2));
y(rango) = A; % Valor de la función 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) % Título
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
Amplitud
Pulso rectangular
18 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
Pulso triangular
El código que sigue permite representar un pulso triangular de amplitud y periodo
definidos por el usuario, centrado en el origen de coordenadas.
%%%%% FUNCIÓN 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 función
A = 1; % Amplitud
T = 2; % Periodo
% Rango de valores de t para los que la función no es nula
rango = find ((t >= -T/2) & (t <= T/2));
y(rango) = A*(1 - abs(t(rango))/(T/2)); % Función 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) % Título
clear all; % Elimina las variables utilizadas en esta rutina
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 19
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. 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
Amplitud
Pulso triangular
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.
%%%%% FUNCIÓN ESCALÓN %%%%%
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 función
A = 1; % Amplitud
20 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
T = 2; % Tiempo de discontinuidad
% Rango de valores de t para los que la función no es nula
rango = find (t >= T);
y(rango) = A; % Valor de la función 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 ('Escalón u(t - T)', 'FontName', 'Times', 'Fontsize', 24); % Título
y = zeros (1, length(t)); % Comienza anulando la función
A = 1; % Amplitud
T = -2; % Tiempo de discontinuidad
% Rango de valores de t para los que la función no es nula
rango = find (t >= T);
y(rango) = A; % Valor de la función 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 función
A = 1; % Amplitud
T = 2; % Tiempo de discontinuidad
% Rango de valores de t para los que la función no es nula
rango = find (t <= T);
y(rango) = A; % Valor de la función 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',
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 21
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
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
y = zeros (1, length(t)); % Comienza anulando la función
A = 1; % Amplitud
T = -2; % Tiempo de discontinuidad
% Rango de valores de t para los que la función no es nula
rango = find (t <= T);
y(rango) = A; % Valor de la función 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
Escalón u(t - T)
T 0
0
A
t
T<0
0 T
0
A
t
T>0 Escalón u(T - t)
T 0
0
A
t
T<0
22 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
Signo
La rutina siguiente permite representar la función signo. En realidad, la rutina, al igual
que ocurre con la destinada a representar la función coseno, no hace más que establecer las
condiciones de representación por cuanto la función está disponible directamente en Matlab.
Obsérvese que, con relación a esta función, podríamos obtener cuatro representaciones dis-
tintas similares a las obtenidas en el caso de la función escalón. Obsérvese también que en la
representación gráfica aparece una pequeña discontinuidad en la línea vertical, que es debi-
da a que la resolución utilizada no permite mayor precisión.
%%%%% FUNCIÓN 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); % Función
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 ('Función signo', 'FontName', 'Times', 'Fontsize', 24); % Título
clear all; % Elimina las variables utilizadas en esta rutina
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 23
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
y = Asign(t)
Datos:
A
0
-A
0
A
t
Amplitud
Función signo
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.
%%%%% FUNCIÓN 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); % Función
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 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
size', 12);
title ('Función sinc', 'FontName', 'Times', 'Fontsize', 24); % Título
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
Amplitud
Función sinc
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;
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 25
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
%%%%% FUNCIÓN COMBINADA %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienzo de la primera función
T2 = 1; % Comienzo de la segunda función
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t); % Llama a la función 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 ('Función combinada', 'FontName', 'Times', 'Fontsize', 24); % Título
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
Amplitud
Función combinada
26 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
Partes par e impar de una función
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.
%%%%% PARTES PAR E IMPAR DE UNA FUNCIÓN %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienzo de la primera función
T2 = 1; % Comienzo de la segunda función
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t) + 0.02; % Función original
plot (t, y, 'k'); % Función en negro
hold on;
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas
ylabel ('Función (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 función', 'FontName', 'Times', 'Fontsize', 24);
% Título
clear all; % Elimina las variables utilizadas en esta rutina
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 27
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
T1 T2
0
t
Función(negro),Par(rojo),Impar(verde),Suma(azul)
Partes par e impar de una función
Reflexión, desplazamiento y escalado de una función
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.
%%%%% OPERACIONES CON UNA FUNCIÓN %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
T1 = 0; % Comienza la primera función
T2 = 1; % Comienza la segunda función
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t); % Función original
subplot (3, 2, 1); % Recuadro
28 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
plot (t, y, 'b', 'LineWidth', 2); % Función 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); % 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
clear all; % Elimina las variables utilizadas en esta rutina
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 29
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. 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
Original
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
Reflexión
-2 -1 0 1 2
-0.2
0
0.2
0.4
t
Escaladoy
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
Escaladot
-2 -1 0 1 2
-0.4
-0.2
0
0.2
0.4
0.6
0.8
t
Desplazamiento
-2 -1 0 1 2
-0.2
0
0.2
0.4
t
Combinación
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 %%%%%
clear all; % Elimina variables utilizadas en otras rutinas
A = 1; % Amplitud
P = 2; % Duración 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 función
30 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
n = 0; % Número de periodos para t < 0
while n*T>tmin
n = n - 1;
end
tc1 = (n: 0)*T; % Instantes centrales de los pulsos
m = 1; % Número 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);
% Título
clear all; % Elimina las variables utilizadas en esta rutina
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
-T/2 -P/2 0 P/2 T/2
0
A
t
Amplitud
Tren de pulsos rectangulares
1.3 Ejercicios propuestos
Ejercicio 1
Escribir un código Matlab
que permita obtener
la figura adjunta.
-T/2 0 T/2
0
A
t
Amplitud
Rectificación de onda completa
32 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
Ejercicio 2
Escribir un código Matlab
que permita obtener
la figura adjunta.
-T/2 -P/2 0 P/2 T/2
0
A
t
Amplitud
Rectificación de media onda
Ejercicio 3
Escribir un código Matlab
que permita obtener
la figura adjunta.
T-Texp T T+Texp
0
A
t
Amplitud
Sucesión de pulsos exponenciales
Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 33
Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
Ejercicio 4
Escribir un código Matlab
que permita obtener
la figura adjunta.
T1 T2 T3 T4
0
A
t
Amplitud
Pulso trapezoidal
Ejercicio 5
Escribir un código Matlab
que permita obtener
las figuras adjuntas.
0 T 2T 3T
ymin
0
ymax
t
Amplitud
Función combinada
-3T -2T -T 0
ymin
0
ymax
t
Amplitud
34 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

Más contenido relacionado

La actualidad más candente

Transformada de fourier y convolucion
Transformada de fourier y convolucionTransformada de fourier y convolucion
Transformada de fourier y convolucionjesus vera
 
Coeficientes y transformada de Fourier en Matlab
Coeficientes y transformada de Fourier en MatlabCoeficientes y transformada de Fourier en Matlab
Coeficientes y transformada de Fourier en MatlabVictor Hugo Analco
 
Resistencia estática y dinamica de diodos
Resistencia estática y dinamica de diodosResistencia estática y dinamica de diodos
Resistencia estática y dinamica de diodosDrykers García Say
 
Filtro pasa bajas y pasa altas pasivos
Filtro pasa bajas y pasa altas pasivosFiltro pasa bajas y pasa altas pasivos
Filtro pasa bajas y pasa altas pasivosAlejandro Flores
 
Analisis de fourier para señales
Analisis de fourier para señalesAnalisis de fourier para señales
Analisis de fourier para señalesdoc digitus
 
V corriente alterna 1
V corriente alterna 1V corriente alterna 1
V corriente alterna 1brayham2010
 
Asignación de Polos y Predictor de Smith
Asignación de Polos y Predictor de SmithAsignación de Polos y Predictor de Smith
Asignación de Polos y Predictor de SmithPaolo Castillo
 
filtro FIR pasabanda con MATLAB
filtro FIR pasabanda con MATLABfiltro FIR pasabanda con MATLAB
filtro FIR pasabanda con MATLABchrisleoflg
 
G19 funcion de transferencia y diagrama de bode
G19 funcion de transferencia y diagrama de bodeG19 funcion de transferencia y diagrama de bode
G19 funcion de transferencia y diagrama de bodeRoslyn Cruz Castro
 
Sistemas de comunicaciones - Práctica 04
Sistemas de comunicaciones - Práctica 04Sistemas de comunicaciones - Práctica 04
Sistemas de comunicaciones - Práctica 04Cristian Ortiz Gómez
 
Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Julio Daniel Ruano
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambioVelmuz Buzz
 
10 transformada fourier
10 transformada fourier10 transformada fourier
10 transformada fourierAlex Jjavier
 
Entradas senoidales rectificación a media onda y rectificación de onda completa
Entradas senoidales  rectificación a media onda y rectificación de onda completaEntradas senoidales  rectificación a media onda y rectificación de onda completa
Entradas senoidales rectificación a media onda y rectificación de onda completaGeison Chavez
 

La actualidad más candente (20)

Transformada de fourier y convolucion
Transformada de fourier y convolucionTransformada de fourier y convolucion
Transformada de fourier y convolucion
 
Serie de Fourier
Serie de FourierSerie de Fourier
Serie de Fourier
 
Coeficientes y transformada de Fourier en Matlab
Coeficientes y transformada de Fourier en MatlabCoeficientes y transformada de Fourier en Matlab
Coeficientes y transformada de Fourier en Matlab
 
Resistencia estática y dinamica de diodos
Resistencia estática y dinamica de diodosResistencia estática y dinamica de diodos
Resistencia estática y dinamica de diodos
 
Filtro pasa bajas y pasa altas pasivos
Filtro pasa bajas y pasa altas pasivosFiltro pasa bajas y pasa altas pasivos
Filtro pasa bajas y pasa altas pasivos
 
Analisis de fourier para señales
Analisis de fourier para señalesAnalisis de fourier para señales
Analisis de fourier para señales
 
V corriente alterna 1
V corriente alterna 1V corriente alterna 1
V corriente alterna 1
 
Asignación de Polos y Predictor de Smith
Asignación de Polos y Predictor de SmithAsignación de Polos y Predictor de Smith
Asignación de Polos y Predictor de Smith
 
filtro FIR pasabanda con MATLAB
filtro FIR pasabanda con MATLABfiltro FIR pasabanda con MATLAB
filtro FIR pasabanda con MATLAB
 
Sa fourier con matlab
Sa fourier con matlabSa fourier con matlab
Sa fourier con matlab
 
G19 funcion de transferencia y diagrama de bode
G19 funcion de transferencia y diagrama de bodeG19 funcion de transferencia y diagrama de bode
G19 funcion de transferencia y diagrama de bode
 
Sistemas de comunicaciones - Práctica 04
Sistemas de comunicaciones - Práctica 04Sistemas de comunicaciones - Práctica 04
Sistemas de comunicaciones - Práctica 04
 
Problemas de Regulación Automática
Problemas de Regulación AutomáticaProblemas de Regulación Automática
Problemas de Regulación Automática
 
Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)
 
Labteoriaderedes2
Labteoriaderedes2Labteoriaderedes2
Labteoriaderedes2
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambio
 
Análisis de la respuesta del sistema
Análisis de la respuesta del sistemaAnálisis de la respuesta del sistema
Análisis de la respuesta del sistema
 
10 transformada fourier
10 transformada fourier10 transformada fourier
10 transformada fourier
 
Entradas senoidales rectificación a media onda y rectificación de onda completa
Entradas senoidales  rectificación a media onda y rectificación de onda completaEntradas senoidales  rectificación a media onda y rectificación de onda completa
Entradas senoidales rectificación a media onda y rectificación de onda completa
 
Antenas(ejercicios)
Antenas(ejercicios)Antenas(ejercicios)
Antenas(ejercicios)
 

Destacado

Trabajo grupal analisis de señales mi 15 completo
Trabajo grupal analisis de señales mi 15 completoTrabajo grupal analisis de señales mi 15 completo
Trabajo grupal analisis de señales mi 15 completoAlejandro Gudiño Morandini
 
Matlab una-introduccion-con-ejemplos-practicos-amos-gilat
Matlab una-introduccion-con-ejemplos-practicos-amos-gilatMatlab una-introduccion-con-ejemplos-practicos-amos-gilat
Matlab una-introduccion-con-ejemplos-practicos-amos-gilatalop3z
 
Algebra Lineal
Algebra LinealAlgebra Lineal
Algebra Linealpeter9505
 
Ford kuga pre launch video
Ford kuga pre launch videoFord kuga pre launch video
Ford kuga pre launch videoToon Coenen
 
Erp tema10-unidad iii
Erp tema10-unidad iiiErp tema10-unidad iii
Erp tema10-unidad iiiUDO Monagas
 
señales digitales
señales digitalesseñales digitales
señales digitalesJose Saenz
 
Matlab y su lista de comandos
Matlab y su lista de comandosMatlab y su lista de comandos
Matlab y su lista de comandosCarlos Aparicio
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlabjamarzo
 
Analisis Espectral Usando Matlab
Analisis Espectral Usando MatlabAnalisis Espectral Usando Matlab
Analisis Espectral Usando Matlabkennymanrique
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlabMarc Llanos
 
Manual simulink
Manual simulinkManual simulink
Manual simulinkcosococo
 
Digital Signal Processing Lab Manual ECE students
Digital Signal Processing Lab Manual ECE studentsDigital Signal Processing Lab Manual ECE students
Digital Signal Processing Lab Manual ECE studentsUR11EC098
 
Muestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLabMuestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLabmarco calderon layme
 
Resolución de ecuaciones diferenciales con MATLAB R2015a
Resolución de ecuaciones diferenciales  con  MATLAB  R2015aResolución de ecuaciones diferenciales  con  MATLAB  R2015a
Resolución de ecuaciones diferenciales con MATLAB R2015aJoanny Ibarbia Pardo
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audioRick P
 
Analisis espectral en MATLAB
Analisis espectral en MATLABAnalisis espectral en MATLAB
Analisis espectral en MATLABABEL170
 
MATLAB Programs For Beginners. | Abhi Sharma
MATLAB Programs For Beginners. | Abhi SharmaMATLAB Programs For Beginners. | Abhi Sharma
MATLAB Programs For Beginners. | Abhi SharmaAbee Sharma
 

Destacado (20)

Trabajo grupal analisis de señales mi 15 completo
Trabajo grupal analisis de señales mi 15 completoTrabajo grupal analisis de señales mi 15 completo
Trabajo grupal analisis de señales mi 15 completo
 
Apuntes de clase dinamica ruben boroscheck
Apuntes de clase dinamica ruben boroscheckApuntes de clase dinamica ruben boroscheck
Apuntes de clase dinamica ruben boroscheck
 
Matlab una-introduccion-con-ejemplos-practicos-amos-gilat
Matlab una-introduccion-con-ejemplos-practicos-amos-gilatMatlab una-introduccion-con-ejemplos-practicos-amos-gilat
Matlab una-introduccion-con-ejemplos-practicos-amos-gilat
 
Algebra Lineal
Algebra LinealAlgebra Lineal
Algebra Lineal
 
Ford kuga pre launch video
Ford kuga pre launch videoFord kuga pre launch video
Ford kuga pre launch video
 
Erp tema10-unidad iii
Erp tema10-unidad iiiErp tema10-unidad iii
Erp tema10-unidad iii
 
señales digitales
señales digitalesseñales digitales
señales digitales
 
Matlab y su lista de comandos
Matlab y su lista de comandosMatlab y su lista de comandos
Matlab y su lista de comandos
 
La función escalón unitario
La función escalón unitarioLa función escalón unitario
La función escalón unitario
 
Curso de simulink 2 0
Curso de simulink 2 0Curso de simulink 2 0
Curso de simulink 2 0
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Analisis Espectral Usando Matlab
Analisis Espectral Usando MatlabAnalisis Espectral Usando Matlab
Analisis Espectral Usando Matlab
 
Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlab
 
Manual simulink
Manual simulinkManual simulink
Manual simulink
 
Digital Signal Processing Lab Manual ECE students
Digital Signal Processing Lab Manual ECE studentsDigital Signal Processing Lab Manual ECE students
Digital Signal Processing Lab Manual ECE students
 
Muestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLabMuestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLab
 
Resolución de ecuaciones diferenciales con MATLAB R2015a
Resolución de ecuaciones diferenciales  con  MATLAB  R2015aResolución de ecuaciones diferenciales  con  MATLAB  R2015a
Resolución de ecuaciones diferenciales con MATLAB R2015a
 
Mat lab manipulación de señales de audio
Mat lab manipulación de señales de audioMat lab manipulación de señales de audio
Mat lab manipulación de señales de audio
 
Analisis espectral en MATLAB
Analisis espectral en MATLABAnalisis espectral en MATLAB
Analisis espectral en MATLAB
 
MATLAB Programs For Beginners. | Abhi Sharma
MATLAB Programs For Beginners. | Abhi SharmaMATLAB Programs For Beginners. | Abhi Sharma
MATLAB Programs For Beginners. | Abhi Sharma
 

Similar a 211 matlab senales

Jaime salazar presentacion saia
Jaime salazar presentacion saiaJaime salazar presentacion saia
Jaime salazar presentacion saiajaime_19
 
Lenguaje de simulacion
Lenguaje de simulacionLenguaje de simulacion
Lenguaje de simulacionlilijessica
 
EDO de Segundo Orden en Circuitos RLC en serie
EDO de Segundo Orden en Circuitos RLC en serieEDO de Segundo Orden en Circuitos RLC en serie
EDO de Segundo Orden en Circuitos RLC en serieIvenick
 
Gráfica derivada e Integral de una función discreta y continua en matlab
Gráfica derivada e Integral de una función discreta y continua en matlabGráfica derivada e Integral de una función discreta y continua en matlab
Gráfica derivada e Integral de una función discreta y continua en matlabFabián Garzón
 
Simulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funcionesSimulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funcionesCarlos Vergara Branje
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156RossiHeredia1
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01bRÄyaN
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01yadira69
 
Matlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioMatlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioTensor
 
Teoria de control -- aplicaciones matlab
Teoria de control -- aplicaciones matlabTeoria de control -- aplicaciones matlab
Teoria de control -- aplicaciones matlabmartinezeduardo
 
Matlab INIT
Matlab INITMatlab INIT
Matlab INITTensor
 
Matlab scientific scilab_mathematics
Matlab scientific scilab_mathematicsMatlab scientific scilab_mathematics
Matlab scientific scilab_mathematicsCristian Cegelski
 
Ecuaciones paramétricas
Ecuaciones paramétricas Ecuaciones paramétricas
Ecuaciones paramétricas Elixhg
 

Similar a 211 matlab senales (20)

laboratorio1 de diniz
laboratorio1 de dinizlaboratorio1 de diniz
laboratorio1 de diniz
 
Respuesta en frecuencia
Respuesta en frecuenciaRespuesta en frecuencia
Respuesta en frecuencia
 
Matlabpresentación
MatlabpresentaciónMatlabpresentación
Matlabpresentación
 
Jaime salazar presentacion saia
Jaime salazar presentacion saiaJaime salazar presentacion saia
Jaime salazar presentacion saia
 
Lenguaje de simulacion
Lenguaje de simulacionLenguaje de simulacion
Lenguaje de simulacion
 
EDO de Segundo Orden en Circuitos RLC en serie
EDO de Segundo Orden en Circuitos RLC en serieEDO de Segundo Orden en Circuitos RLC en serie
EDO de Segundo Orden en Circuitos RLC en serie
 
Gráfica derivada e Integral de una función discreta y continua en matlab
Gráfica derivada e Integral de una función discreta y continua en matlabGráfica derivada e Integral de una función discreta y continua en matlab
Gráfica derivada e Integral de una función discreta y continua en matlab
 
Simulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funcionesSimulación en Ing. Eléctrica - Aproximación de funciones
Simulación en Ing. Eléctrica - Aproximación de funciones
 
Practica 5 simulink-5156
Practica 5 simulink-5156Practica 5 simulink-5156
Practica 5 simulink-5156
 
Teoria de control
Teoria de controlTeoria de control
Teoria de control
 
Teoria de control
Teoria de controlTeoria de control
Teoria de control
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01
 
Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01Matlabteoria 130808215706-phpapp01
Matlabteoria 130808215706-phpapp01
 
Matlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecioMatlab integración numérica, método del trapecio
Matlab integración numérica, método del trapecio
 
Teoria de control -- aplicaciones matlab
Teoria de control -- aplicaciones matlabTeoria de control -- aplicaciones matlab
Teoria de control -- aplicaciones matlab
 
Matlab INIT
Matlab INITMatlab INIT
Matlab INIT
 
Fourier mat lab
Fourier mat labFourier mat lab
Fourier mat lab
 
Matlab scientific scilab_mathematics
Matlab scientific scilab_mathematicsMatlab scientific scilab_mathematics
Matlab scientific scilab_mathematics
 
Matlab teoria
Matlab teoriaMatlab teoria
Matlab teoria
 
Ecuaciones paramétricas
Ecuaciones paramétricas Ecuaciones paramétricas
Ecuaciones paramétricas
 

Último

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfmiltonantonioescamil
 
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXTIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXCamiloAlejandroMonte1
 
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhPIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhjonathancallenteg
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllllJesusFlores332
 
la historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionla historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionemanuelrosalezsanche
 
manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-20161angort
 

Último (6)

Inyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdfInyección electrónica, Diagnostico por imagenes.pdf
Inyección electrónica, Diagnostico por imagenes.pdf
 
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXXTIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
TIPOS DE TENDIDO DE CAMA XXXXXXXXXXXXXXX
 
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfhPIAnGIMNACIA___19655c35a563e33___ 2.pdfh
PIAnGIMNACIA___19655c35a563e33___ 2.pdfh
 
lollllllllllllllllllllllllllllllllllllllllllllllll
lolllllllllllllllllllllllllllllllllllllllllllllllllollllllllllllllllllllllllllllllllllllllllllllllll
lollllllllllllllllllllllllllllllllllllllllllllllll
 
la historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucionla historia de nissan skyline y su evolucion
la historia de nissan skyline y su evolucion
 
manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016manual de usuario de automovil nissan march 2010-2016
manual de usuario de automovil nissan march 2010-2016
 

211 matlab senales

  • 1. 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. 1.1 Elementos básicos de una representación gráfica 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- Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 1 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 2. 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 t = valorinicial: intervalo: valorfinal % Define la base de tiempos % 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 t = linspace (valorinicial, valor final, númeropuntos) % Define la base % de tiempos % 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. 2 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
  • 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 length (t) % Determina la longitud del vector t % t: vector base de tiempos definido antes de la ejecución de esta instrucción Para determinar en qué posición de la base se encuentra un determinado valor del tiempo puede usarse la instrucción p0 = find(t == t0) % Determina la posición dentro de la base de tiempos % en la que se encuentra el valor t0 de t Esta instrucción debe usarse con precaución. Dependiendo de la base de tiempos y de los redondeos internos del ordenador, puede ocurrir que no haya ningún valor de t que coincida exactamente con t0, con lo cual esta sentencia no produciría ningún resultado y las que vayan a continuación de ella conducirían a resultados no esperados. Las posiciones en la base de tiempo están numeradas automáticamente, de forma que la posición 1 corresponde al valor inicial y la posición length(t) corresponde al valor final. En consecuencia, para determinar el valor del tiempo correspondiente a una determinada posición puede utilizarse la instrucción t(i) % Determina el valor de t que se encuentra en la posición i en la base de tiempos % i: número indicativo de una determinada posición en la base de tiempos Representación de una función La definición previa de la base de tiempos no es necesaria cuando se quiere represen- tar una función de la forma más sencilla posible. Ésta consiste en definir una función me- diante un vector de valores de la función y luego hacer la representación en función de las posiciones que ocupan dichos valores en el vector correspondiente. Es decir, habríamos de ejecutar las instrucciones Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 3 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 4. y = y1:y2:...yn; plot (y) % Define un vector de valores de la función y % Representa la función 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 plot (t, y) % Representa la función y(t) % t: base de tiempos definida con anterioridad a la aplicación de esta instrucción % y: función matemática definida con anterioridad a la aplicación de esta instrucció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 stem (t, y) % Representa únicamente los valores de la función y(t) % correspondientes a los valores del tiempo incluidos en la base % t: base de tiempos definida con anterioridad a la aplicación de esta instrucción % y: función matemática definida con anterioridad a la aplicación de esta 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. 4 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
  • 5. Edición: características de la línea representativa de la función Una posibilidad de edición 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), etcétera. La instrucción correspondiente es plot (t, y, ‘i’) % Representa la curva con el color i % i: color elegido para la representación de una función 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 plot (t, y, ‘s’) % Representa la función y(t) de forma no continua % s = .: la línea es representada a puntos % s = --: la línea es representada con raya discontinua También puede variarse el grosor de la línea representativa de la función y(t). Para ello puede utilizarse la instrucción plot (t, y, ‘LineWidth’, i) % Hace que la línea representativa de la función y(t) % tenga un grosor de i puntos % i: grosor (en puntos) de la línea representativa de la función y(t) A falta de indicación respecto al grosor a utilizar, Matlab representa la función automá- ticamente con un grosor de 1 punto. Edición: ejes coordenados 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 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 5 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 6. axis ([xo, xn, yo, yn]) % Define los límites extremos de los ejes de coordenadas % xo xn: valores extremos del eje de abscisas % yo yn: valores extremos del eje de ordenadas % Esta instrucción debe ir después de la instrucción plot Con la curva representada en la gráfica Matlab asigna automáticamente 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 números que han de figurar en tales ejes. Tales identificativos pueden ser modificados mediante la instrucción xlabel (‘texto’, ‘FontName’, ‘f’, ‘Fontsize’, s) ylabel (‘texto’, ‘FontName’, ‘f’, ‘Fontsize’, s) % Etiqueta el eje de abscisas % Etiqueta el eje de ordenadas % 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 set (gca, ‘FontName’, ‘f’, ‘Fontsize’, s) % Cambia las características % de los números de los ejes % f: tipo de letra (Helvética, Times, Courier, etcétera) % s: tamaño de letra (10, 12, 14,... puntos) El proceso de edición relativo a los ejes puede completarse añadiendo la instrucción title (‘texto’) % Genera un título para la figura % texto: el texto que se desea que aparezca como título de la figura 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. 6 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
  • 7. Edición: enmallado de la figura Otra posibilidad de edición consiste en añadir una malla a la figura. Esto puede conse- guirse utilizando simplemente la instrucción grid 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 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], ‘XTickLabel’, {‘tx1’; ‘tx2’; ... ‘txn’}, ‘ytick’, [y1 y2 ... ym], ‘YTickLabel’, {‘ty1’; ‘ty2’; ... ‘tym}’) % 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 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. Obtención de distintas curvas con una sola rutina En principio, si damos a Matlab las instrucciones para representar distintas curvas como resultado de la ejecución de una única rutina, el programa nos presentará sólo la últi- ma. Para poder ver todas las curvas generadas como consecuencia de la ejecución de la ru- tina hay distintas posibilidades. Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 7 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 8. La primera de ellas consiste en utilizar la instrucción figure % Permite obtener distintas figuras mediante la ejecución de una sola rutina % La instrucción ha de insertarse separando los bloques % correspondientes a las especificaciones de cada representación 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 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 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 pause off % Cancela los efectos de instrucciones pause anteriores Otra posibilidad consiste en utilizar la instrucción hold on % Representa diversas funciones en una sola figura % Ha de ir precedida de la sentencia plot correspondiente a la primera función a representar % Va seguida de las características de los ejes y del enmallado 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 8 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
  • 9. hold off % Cancela los efectos de instrucciones hold on anteriores 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 subplot (filas, columnas, cuadro) % Divide la figura en recuadros % y selecciona uno de ellos % filas: número de filas de la matriz que constituye el conjunto de recuadros % columnas: número de columnas de la matriz que constituye el conjunto de recuadros % cuadro: número identificativo del recuadro seleccionado % La numeración 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 instrucción precede a la de plot Combinación 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 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 t = [t1 t2 ... tn]; y = [y1 y2 ... yn]; plot (t, y) % Combina las bases de tiempo en una sola % Combina las distintas funciones en una sola % Representa la función 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 añade una línea de conexión entre aquéllas, con lo que las discontinuidades entre ellas, si existen, quedan enmascaradas. Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 9 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 10. 1.2 Algunas funciones de interés en sistemas lineales A continuación vamos a presentar los códigos correspondientes a rutinas que pueden ser utilizadas para representar funciones continuas del tiempo. El propósito principal de esta sección es ilustrar con ejemplos concretos la utilización de las instrucciones mencionadas en la sección anterior. En consecuencia, se recomienda encarecidamente al lector que examine detenidamente los distintos códigos 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 códigos han de estar presentes obligatoriamente si se desea que tales có- digos ejecuten las funciones para las que fueron diseñados. Sin embargo, otras sentencias (o partes de sentencias) son de carácter 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, tamaño y tipo de letra, color de las curvas, etcétera). En lo que sigue se aplica un estilo determinado, pero se sugiere al lector que pruebe a alterar las características de edición de las distintas figuras. Obsérvese, además, que todos los códigos empiezan y terminan con la instrucción clear all % Elimina información de todas las variables 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. 10 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
  • 11. %%%%% 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 función f = 1/T; % Frecuencia de la función w = 2*pi*f; % Frecuencia angular de la función fase = pi/4; % Fase de la función am = 2; % Amplitud de la función y = am*cos(w*t + fase); % Función 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 clear all; % Elimina las variables utilizadas en esta rutina y = Acos(ωt + ϕ) ω = 2πf f = 1/T Datos: T, A -T 0 T -A 0 A Función coseno t (segundos) cosenodeperiodoT Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 11 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 12. 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 %%%%% 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); % Función subplot (2, 2, 1); % Selección 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)% Título c = 0.5; % Coeficiente del exponente A = 2; % Coeficiente de la exponencial y2 = A*exp(c*t); % Función subplot (2, 2, 2); % Selección 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) % Título c = 0.5; % Coeficiente del exponente A = -2; % Coeficiente de la exponencial y3 = A*exp(c*t); % Función 12 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
  • 13. subplot (2, 2, 3); % Selección 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); % Función subplot (2, 2, 4); % Selección 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>0c<0 Exponenciales decrecientes 0 0 A t (segundos) A>0c>0 Exponenciales crecientes 0 A 0 t (segundos) A<0c>0 0 A 0 t (segundos) A<0c<0 Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 13 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 14. 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 Mediante el operador .* se multiplican elemento a elemento los componentes de los dos vectores que figuran en la instrucción. Más adelante veremos otros casos en los que se utilizan operadores precedidos por puntos. %%%%% FUNCIÓN 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; % Módulo 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 función f = 1/T; % Frecuencia w = 2*pi*f; % Frecuencia angular s = sigma + j*w; % Coeficiente del exponente y = A*exp(s*t); % Función 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 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
  • 15. 'Fontsize', 12); title ('Exponencial compleja', 'FontName', 'Times', 'Fontsize', 24) % Título 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 = aejϕ s = σ + jω ω = 2πf f = 1/T Datos: a, ϕ, σ, T 0 -a a t Partereal Exponencial compleja 0 -a a t Parteimaginaria %%%%% FUNCIÓN EXPONENCIAL COMPLEJA (influencia de los parámetros) %%%%% clear all; % Elimina variables utilizadas en otras rutinas t = -3*10^(-3): 10^(-5): 3*10^(-3); % Base de tiempos am = 0.5; % Módulo de la amplitud compleja fase = 0; % Fase de la amplitud compleja Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 15 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 16. A = am*exp(j*fase); % Amplitud compleja sigma = 0.5*10^3; % Parte real del coeficiente del exponente T = 10^(-3); % Periodo de la función 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);% Función 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) % Título 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);% Función 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)% Título 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);% Función 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 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
  • 17. 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);% Función 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 = aejϕ s = σ + jω ω = 2πf f = 1/T Datos: a, ϕ, σ, T 0 -a a t Partereal(sigma>0) Exponenciales crecientes 0 -a a t Partereal(sigma<0) Exponenciales amortiguadas 0 -a a t Parteimaginaria(sigma>0) 0 -a a t Parteimaginaria(sigma<0) Pulso rectangular El código que sigue permite representar un pulso rectangular de amplitud y periodo dados, centrado en el origen de coordenadas. Se recomienda prestar una atención específica a la forma de definir el intervalo en el que la función tiene un valor no nulo. Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 17 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 18. %%%%% FUNCIÓN 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 función A = 1; % Amplitud T = 2; % Periodo % Rango de valores de t para los que la función no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A; % Valor de la función 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) % Título 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 Amplitud Pulso rectangular 18 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
  • 19. Pulso triangular El código que sigue permite representar un pulso triangular de amplitud y periodo definidos por el usuario, centrado en el origen de coordenadas. %%%%% FUNCIÓN 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 función A = 1; % Amplitud T = 2; % Periodo % Rango de valores de t para los que la función no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A*(1 - abs(t(rango))/(T/2)); % Función 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) % Título clear all; % Elimina las variables utilizadas en esta rutina Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 19 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 20. 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 Amplitud Pulso triangular 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. %%%%% FUNCIÓN ESCALÓN %%%%% 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 función A = 1; % Amplitud 20 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
  • 21. T = 2; % Tiempo de discontinuidad % Rango de valores de t para los que la función no es nula rango = find (t >= T); y(rango) = A; % Valor de la función 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 ('Escalón u(t - T)', 'FontName', 'Times', 'Fontsize', 24); % Título y = zeros (1, length(t)); % Comienza anulando la función A = 1; % Amplitud T = -2; % Tiempo de discontinuidad % Rango de valores de t para los que la función no es nula rango = find (t >= T); y(rango) = A; % Valor de la función 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 función A = 1; % Amplitud T = 2; % Tiempo de discontinuidad % Rango de valores de t para los que la función no es nula rango = find (t <= T); y(rango) = A; % Valor de la función 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', Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 21 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 22. 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 y = zeros (1, length(t)); % Comienza anulando la función A = 1; % Amplitud T = -2; % Tiempo de discontinuidad % Rango de valores de t para los que la función no es nula rango = find (t <= T); y(rango) = A; % Valor de la función 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 Escalón u(t - T) T 0 0 A t T<0 0 T 0 A t T>0 Escalón u(T - t) T 0 0 A t T<0 22 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
  • 23. Signo La rutina siguiente permite representar la función signo. En realidad, la rutina, al igual que ocurre con la destinada a representar la función coseno, no hace más que establecer las condiciones de representación por cuanto la función está disponible directamente en Matlab. Obsérvese que, con relación a esta función, podríamos obtener cuatro representaciones dis- tintas similares a las obtenidas en el caso de la función escalón. Obsérvese también que en la representación gráfica aparece una pequeña discontinuidad en la línea vertical, que es debi- da a que la resolución utilizada no permite mayor precisión. %%%%% FUNCIÓN 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); % Función 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 ('Función signo', 'FontName', 'Times', 'Fontsize', 24); % Título clear all; % Elimina las variables utilizadas en esta rutina Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 23 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 24. y = Asign(t) Datos: A 0 -A 0 A t Amplitud Función signo 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. %%%%% FUNCIÓN 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); % Función 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 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
  • 25. size', 12); title ('Función sinc', 'FontName', 'Times', 'Fontsize', 24); % Título 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 Amplitud Función sinc 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; Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 25 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 26. %%%%% FUNCIÓN COMBINADA %%%%% clear all; % Elimina variables utilizadas en otras rutinas T1 = 0; % Comienzo de la primera función T2 = 1; % Comienzo de la segunda función % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t); % Llama a la función 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 ('Función combinada', 'FontName', 'Times', 'Fontsize', 24); % Título 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 Amplitud Función combinada 26 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
  • 27. Partes par e impar de una función 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. %%%%% PARTES PAR E IMPAR DE UNA FUNCIÓN %%%%% clear all; % Elimina variables utilizadas en otras rutinas T1 = 0; % Comienzo de la primera función T2 = 1; % Comienzo de la segunda función % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t) + 0.02; % Función original plot (t, y, 'k'); % Función en negro hold on; xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Función (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 función', 'FontName', 'Times', 'Fontsize', 24); % Título clear all; % Elimina las variables utilizadas en esta rutina Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 27 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 28. T1 T2 0 t Función(negro),Par(rojo),Impar(verde),Suma(azul) Partes par e impar de una función Reflexión, desplazamiento y escalado de una función 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. %%%%% OPERACIONES CON UNA FUNCIÓN %%%%% clear all; % Elimina variables utilizadas en otras rutinas T1 = 0; % Comienza la primera función T2 = 1; % Comienza la segunda función % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t); % Función original subplot (3, 2, 1); % Recuadro 28 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
  • 29. plot (t, y, 'b', 'LineWidth', 2); % Función 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); % 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 clear all; % Elimina las variables utilizadas en esta rutina Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 29 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 30. 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 Original -2 -1 0 1 2 -0.4 -0.2 0 0.2 0.4 0.6 0.8 t Reflexión -2 -1 0 1 2 -0.2 0 0.2 0.4 t Escaladoy -2 -1 0 1 2 -0.4 -0.2 0 0.2 0.4 0.6 0.8 t Escaladot -2 -1 0 1 2 -0.4 -0.2 0 0.2 0.4 0.6 0.8 t Desplazamiento -2 -1 0 1 2 -0.2 0 0.2 0.4 t Combinación 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 %%%%% clear all; % Elimina variables utilizadas en otras rutinas A = 1; % Amplitud P = 2; % Duración 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 función 30 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
  • 31. n = 0; % Número de periodos para t < 0 while n*T>tmin n = n - 1; end tc1 = (n: 0)*T; % Instantes centrales de los pulsos m = 1; % Número 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); % Título clear all; % Elimina las variables utilizadas en esta rutina 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. -T/2 -P/2 0 P/2 T/2 0 A t Amplitud Tren de pulsos rectangulares 1.3 Ejercicios propuestos Ejercicio 1 Escribir un código Matlab que permita obtener la figura adjunta. -T/2 0 T/2 0 A t Amplitud Rectificación de onda completa 32 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
  • 33. Ejercicio 2 Escribir un código Matlab que permita obtener la figura adjunta. -T/2 -P/2 0 P/2 T/2 0 A t Amplitud Rectificación de media onda Ejercicio 3 Escribir un código Matlab que permita obtener la figura adjunta. T-Texp T T+Texp 0 A t Amplitud Sucesión de pulsos exponenciales Prácticas de circuitos como sistemas lineales. Ejercicios sencillos con Matlab 33 Dpto. Teoría de la Señal y Comunicaciones. Escuela Técnica Superior de Ing. Telecomunicación. UNIVERSIDAD DE VIGO
  • 34. Ejercicio 4 Escribir un código Matlab que permita obtener la figura adjunta. T1 T2 T3 T4 0 A t Amplitud Pulso trapezoidal Ejercicio 5 Escribir un código Matlab que permita obtener las figuras adjuntas. 0 T 2T 3T ymin 0 ymax t Amplitud Función combinada -3T -2T -T 0 ymin 0 ymax t Amplitud 34 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