Академический Документы
Профессиональный Документы
Культура Документы
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Base de tiempos
La definicin de la base de tiempos se hace creando un vector que almacena los valores del tiempo para los
que se desea obtener una representacin de la funcin. Por ejemplo, si queremos representar la variacin de
una funcin entre -10 s y 10 s, los valores inicial y final del vector correspondiente a la base de tiempos sern
precisamente los que acabamos de indicar. Idealmente, querramos que dicho vector fuera un conjunto
infinito en el que es tuvieran incluidos todos los valores comprendidos entre -10 s y 10 s. De esa forma
obtendramos una representacin absolutamente precisa de la funcin. Sin embargo, Matlab no permite
semejante posibilidad, ya que es una herramienta discreta. En consecuencia, a la hora de definir la base de
tiempos hemos de especificar el intervalo entre dos valores consecutivos del tiempo. As, si en el ejemplo que
estamos considerando especificamos un intervalo de 0.01 s, los valores del tiempo contenidos en el vector de
la base de tiempos son -10s, -9.99 s, -9.98 s,... -0.01 s, 0 s, 0.01 s,... 9.98 s, 9.99 s y 10 s.
Teniendo en cuenta estas consideraciones, la instruccin para definir la base de tiempos es
t = valorinicial: intervalo: valorfinal
PPDD
FF
% valorinicial: primer valor del tiempo para el que queremos representar la funcin
% intervalo: separacin entre dos valores consecutivos del vector base de tiempos
% valorfinal: ltimo valor del tiempo para el que queremos representar la funcin
La seleccin del intervalo est condicionada por dos requisitos contrapuestos. Por una parte, cuanto ms
pequeo sea, ms precisa ser la representacin de la funcin; en otras palabras, la representacin tendr un
aspecto ms continuo, mientras que, cuanto ms grande sea, la representacin se parecer ms a un conjunto
de puntos (los valores de la funcin para los distintos instantes) unidos por lneas. La operacin de unir los
diferentes puntos de la representacin es ejecutada automticamente por Matlab. Por otro lado, cuanto ms
pequeo sea el intervalo, ms tiempo tardar Matlab en completar la instruccin y mayor espacio de memoria
se ocupar en el ordenador. Para intervalos excesivamente pequeos, que den origen a un gran nmero de
valores en la base, la instruccin puede ser rechazada por el programa, ya que ste impone un lmite mximo
aal l
(que depende de la versin concreta de Matlab de la que se trate) al nmero de elementos que puede contener
un vector.
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Una forma equivalente para definir la base de tiempos consiste en utilizar la instruccin
PPDD
FF
length (t)
% Determina la longitud del vector t
% t: vector base de tiempos definido antes de la ejecucin de esta instruccin
Para determinar en qu posicin de la base se encuentra un determinado valor del tiempo puede usarse la
instruccin
p0 = find(t == t0) % Determina la posicin dentro de la base de tiempos
% en la que se encuentra el valor t0 de t
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Esta instruccin debe usarse con precaucin. Dependiendo de la base de tiempos y de los redondeos internos
del ordenador, puede ocurrir que no haya ningn valor de t que coincida exactamente con t0, con lo cual esta
sentencia no producira ningn resultado y las que vayan a continuacin de ella conduciran a resultados no
esperados.
Las posiciones en la base de tiempo estn numeradas automticamente, de forma que la posicin 1
corresponde al valor inicial y la posicin length(t) corresponde al valor final. En consecuencia, para
determinar el valor del tiempo correspondiente a una determinada posicin puede utilizarse la instruccin
t(i)
% Determina el valor de t que se encuentra en la posicin i en la base de tiempos
% i: nmero indicativo de una determinada posicin en la base de tiempos
PPDD
FF
y = y1:y2:...yn;
% Define un vector de valores de la funcin y
plot (y)
% Representa la funcin
De esta forma tendramos en el eje de abscisas las posiciones del vector y en el eje de ordenadas los valores
correspondientes a dichas posiciones. Este tipo de representacin grfica apenas tiene inters con relacin a
los objetivos del presente manual.
La forma habitual de representar grficamente una funcin consiste en utilizar la instruccin
plot (t, y) % Representa la funcin y(t)
% t: base de tiempos definida con anterioridad a la aplicacin de esta instruccin
% y: funcin matemtica definida con anterioridad a la aplicacin de esta instruccin
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Con esta instruccin obtenemos los valores del tiempo (no los de posiciones) en el eje de abscisas, mientras
que en el de ordenadas tenemos los valores de la funcin correspondientes a los diferentes instantes.
En este tipo de representacin Matlab intenta presentar al usuario una curva continua (recurdese lo indicado
ms arriba a propsito de la influencia de la seleccin del intervalo en la definicin de la base de tiempos).
Sin embargo, por distintos motivos puede interesar prescindir de dicha representacin continua y obtener en
su lugar una representacin discreta.
En ese caso utilizaramos la instruccin
stem (t, y) % Representa nicamente los valores de la funcin y(t)
% correspondientes a los valores del tiempo incluidos en la base
% t: base de tiempos definida con anterioridad a la aplicacin de esta instruccin
% y: funcin matemtica definida con anterioridad a la aplicacin de esta instruccin
PPDD
FF
As obtendramos un conjunto de puntos, denotados por pequeos crculos, tales que cada uno est definido
por un par de valores de t y de y. La representacin se completa con lneas verticales que unen los distintos
puntos con el eje de abscisas.
Con lo indicado hasta aqu basta para obtener una representacin grfica de cualquier funcin real continua.
Sin embargo, en numerosos casos de inters prctico conviene editar la representacin (es decir, alterar
algunos aspectos adicionales de la misma) a fin de destacar ciertos detalles de aqulla o facilitar su
interpretacin.
Edicin: caractersticas de la lnea representativa de la funcin
Una posibilidad de edicin consiste en fijar el color de la curva representativa de y(t). Pueden utilizarse
diversos colores, como el negro (k), el azul (b), el amarillo (y), el rojo (r), el verde (g), etctera. La
instruccin correspondiente es
plot (t, y, i) % Representa la curva con el color i
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
En principio, Matlab hace las representaciones con lnea continua. Pero tambin es posible conseguir una
representacin a puntos o a rayas discontinuas de la curva. En ese caso, la instruccin a utilizar es
plot (t, y, s) % Representa la funcin y(t) de forma no continua
% s = .: la lnea es representada a puntos
% s = --: la lnea es representada con raya discontinua
Tambin puede variarse el grosor de la lnea representativa de la funcin y(t). Para ello puede utilizarse la
instruccin
plot (t, y, LineWidth, i) % Hace que la lnea representativa de la funcin y(t)
% tenga un grosor de i puntos
% i: grosor (en puntos) de la lnea representativa de la funcin y(t)
PPDD
FF
A falta de indicacin respecto al grosor a utilizar, Matlab representa la funcin automticamente con un
grosor de 1 punto.
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
axis ([xo, xn, yo, yn]) % Define los lmites extremos de los ejes de coordenadas
% xo xn: valores extremos del eje de abscisas
% yo yn: valores extremos del eje de ordenadas
% Esta instruccin debe ir despus de la instruccin plot
Con la curva representada en la grfica Matlab asigna automticamente los identificativos correspondientes a
los ejes de abscisas y de ordenadas (por ejemplo, tiempo y corriente, respectivamente), al igual que lo
hace con los nmeros que han de figurar en tales ejes. Tales identificativos pueden ser modificados mediante
la instruccin
xlabel (texto, FontName, f, Fontsize, s) % Etiqueta el eje de abscisas
ylabel (texto, FontName, f, Fontsize, s) % Etiqueta el eje de ordenadas
% texto: texto que se desea que figure como indicativo del eje
% f: tipo de letra (Helvtica, Times, Courier, etctera)
% s: tamao de letra (10, 12, 14,... puntos)
Para modificar las caractersticas de los nmeros que aparecen en los ejes puede utilizarse la instruccin
PPDD
FF
set (gca, FontName, f, Fontsize, s) % Cambia las caractersticas de los nmeros de los
ejes
% f: tipo de letra (Helvtica, Times, Courier, etctera)
% s: tamao de letra (10, 12, 14,... puntos)
El proceso de edicin relativo a los ejes puede completarse aadiendo la instruccin
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Las rectas que definen la malla parten de los puntos de los ejes a los que se ha asignado nmeros en la
representacin.
En ocasiones puede interesarnos tener, no una malla completa, sino una restringida. Es decir, se trata de
marcar determinados puntos especiales en los ejes y hacer que salgan nicamente de ellos las rectas de la
malla. Adems, podemos querer etiquetar los puntos de los ejes desde los que parten las rectas de la malla.
Ambas funciones pueden realizarse de forma combinada mediante la instruccin
PPDD
FF
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
figure % Permite obtener distintas figuras mediante la ejecucin de una sola rutina
% La instruccin ha de insertarse separando los bloques
% correspondientes a las especificaciones de cada representacin
Las distintas figuras son presentadas de forma agrupada, de modo que en principio slo se ve la ltima.
Desplazando el cuadro correspondiente a sta, aparece a la vista la figura precedente.
Una alternativa a esta posibilidad consiste en utilizar la instruccin
PPDD
FF
En este caso cada figura desaparece antes de ser presentada la siguiente, pero slo cuando el usuario pulsa la
tecla de retorno; mientras no lo hace, se mantiene la imagen de la ltima figura generada. Para evitar la
interaccin entre dos programas que contienen esta instruccin y que se ejecutan secuencialmente conviene
cerrar cada uno de ellos con la instruccin
pause off % Cancela los efectos de instrucciones pause anteriores
Otra posibilidad consiste en utilizar la instruccin
hold on % Representa diversas funciones en una sola figura
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Con esta instruccin todas las curvas generadas durante la ejecucin de la rutina se presentan en una nica
figura, cuyas caractersticas de ejes y enmallado son las definidas para la representacin de la primera curva.
A este respecto debe tomarse la precaucin de asegurar previamente que todas las funciones pueden
representarse en el cuadrado seleccionado por la definicin de los ejes (si est presente) correspondientes a la
primera figura; si una de ellas cae fuera del rea de dibujo (la definida por los ejes o la establecida
automticamente por Matlab si tal definicin no est presente), naturalmente no ser representada.
Al igual que ocurra con la instruccin pause conviene terminar el programa con la instruccin
hold off % Cancela los efectos de instrucciones hold on anteriores
Una cuarta posibilidad de visualizar las distintas curvas generadas durante la ejecucin de una rutina consiste
en dividir una figura en diversos recuadros y representar una o ms curvas (mediante la aplicacin de la
instruccin hold on) en cada uno de ellos. La definicin de los recuadros se hace mediante la instruccin
% Divide la figura en recuadros
% y selecciona uno de ellos
% filas: nmero de filas de la matriz que constituye el conjunto de recuadros
% columnas: nmero de columnas de la matriz que constituye el conjunto de recuadros
% cuadro: nmero identificativo del recuadro seleccionado
% La numeracin de recuadros se hace por filas y luego por columnas
(en una matriz 2 x 2 el recuadro 3 es el correspondiente a la fila 2 y la columna 1)
% Esta instruccin precede a la de plot
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Otra posibilidad consiste en definir cada funcin por separado (con su correspondiente base de tiempos, que
no tiene por qu ser igual para ambas) y a continuacin aplicar las instrucciones
La diferencia entre ambas posibilidades es que la primera permite observar claramente cualquier
discontinuidad que haya entre las funciones que se combinan, mientras que en la segunda Matlab aade una
lnea de conexin entre aqullas, con lo que las discontinuidades entre ellas, si existen, quedan enmascaradas.
PPDD
FF
A continuacin vamos a presentar los cdigos correspondientes a rutinas que pueden ser utilizadas para
representar funciones continuas del tiempo. El propsito principal de esta seccin es ilustrar con ejemplos
concretos la utilizacin de las instrucciones mencionadas en la seccin anterior. En consecuencia, se
recomienda encarecidamente al lector que examine
detenidamente los distintos cdigos y que se asegure de que entiende por qu se utilizan unas sentencias y no
otras en cada caso concreto. Un ejercicio interesante en este sentido es tratar de conseguir el mismo objetivo
fijado para cada rutina, pero utilizando juegos de instrucciones diferentes.
Por otro lado, es preciso tener en cuenta que, como es obvio, algunas de las sentencias incluidas en dichos
cdigos han de estar presentes obligatoriamente si se desea que tales cdigos ejecuten las funciones para las
que fueron diseados. Sin embargo, otras sentencias (o partes de sentencias) son de carcter voluntario. Cada
programador tiene su propio estilo, que no necesariamente coincide con el de otras personas, y eso se refleja,
entre otras cosas, en las opciones tomadas para representar figuras (malla, ejes, tamao y tipo de letra, color
de las curvas, etctera). En lo que sigue se aplica un estilo determinado, pero se sugiere al lector que pruebe a
alterar las caractersticas de edicin de las distintas figuras.
Obsrvese, adems, que todos los cdigos empiezan y terminan con la instruccin
clear all % Elimina informacin de todas las variables
aal l
Esta instruccin tiene por objeto suprimir de Matlab la informacin relativa a cualquiera de las variables
utilizadas en una determinada rutina, de forma que no se altere inadvertidamente la ejecucin de otra rutina
distinta. La sentencia del principio evita la posible influencia de variables procedentes de otras rutinas.
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Coseno
El cdigo adjunto puede utilizarse para generar la funcin coseno mostrada en la figura.
Cabe observar que la curva no pasa por el origen de los ejes coordenados porque la fase de la funcin no es
nula.
Tambin conviene destacar que no deben confundirse el periodo de la funcin (el de cualquier funcin
peridica), que es t0 en este caso, con el periodo de muestreo para efectuar la representacin (lo que hemos
denominado intervalo ms arriba), que vale 10-9 s en este caso.
%%%%% COSENO %%%%%
PPDD
FF
t = -2*10^(-6):10^(-9):2*10^(-6);
% Base de tiempos
T = 10^(-6);
% Periodo de la funcin
f = 1/T;
% Frecuencia de la funcin
w = 2*pi*f;
% Frecuencia angular de la funcin
fase = pi/4;
% Fase de la funcin
am = 2;
% Amplitud de la funcin
y = am*cos(w*t + fase);
% Funcin
plot (t, y, 'b', 'LineWidth', 2)
% La curva aparece en azul con grosor 2
axis ([-1.5e-6, 1.5e-6, -2.5, 2.5])
% Define el rea de dibujo
xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14)
% Etiq. abscisas
ylabel ('coseno de periodo T', 'FontName', 'Times', 'Fontsize', 14)
% Etiq. ordenadas
set (gca, 'FontName', 'Times', 'Fontsize', 12)
% Texto ejes
grid on;
% Malla(cuadricula)
set (gca, 'xtick', [-10^(-6) 0 10^(-6)], 'XTickLabel', {'-T'; '0'; 'T'}, 'FontName','Times', 'Fontsize', 12)
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Exponenciales reales
El cdigo adjunto permite obtener los cuatro tipos posibles de exponenciales reales.
Cada exponencial est caracterizada por el coeficiente del exponente y por el coeficiente de la exponencial.
Obsrvese que se ha utilizado la sentencia subplot para representar las cuatro curvas en una sola figura.
Obsrvese tambin que la base de tiempos es nica para todas las figuras.
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
Exponenciales complejas
Las dos primeras curvas muestran la variacin con el tiempo de las partes real e imaginaria de una funcin
exponencial compleja. Obsrvese que para obtener tales partes se hace uso de las instrucciones real e imag.
Obsrvese tambin que tal variacin es muy similar en ambos casos; la nica diferencia significativa es la
existencia de un desfase entre ambas representaciones (se alejan en distinta medida del eje de ordenadas).
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Las restantes cuatro curvas muestran la influencia de los signos de los parmetros en la variacin con el
tiempo de las partes real e imaginaria de una funcin exponencial compleja.
Obsrvese que en este caso, al contrario que en el anterior, se hace uso de las instrucciones cos y sin,
respectivamente, para representar las partes real e imaginaria de una funcin.
Obviamente, ambos tipos de representaciones son completamente equivalentes. Obsrvese tambin que en
esta rutina aparecen instrucciones de la forma
y = A*exp(sigma*t).*sin(w*t + fase)
Mediante el operador .* se multiplican elemento a elemento los componentes de los dos vectores que figuran
en la instruccin. Ms adelante veremos otros casos en los que se utilizan operadores precedidos por puntos.
PPDD
FF
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times','Fontsize', 12);
sigma = -0.5*10^3;
% Parte real del coeficiente
del exponente
env = A*exp(sigma*t);
% Envolvente superior
y = A*exp(sigma*t).*sin(w*t + fase);
% Funcin
subplot (2, 2, 4);
% Recuadro parte
imaginaria
plot (t, y, 'b', 'LineWidth', 2);
% Curva en azul de grosor 2
hold on;
plot (t, env, 'r');
% Envolvente de la parte
superior (en rojo)
plot (t, -env, 'r');
% Envolvente de la parte
inferior (en rojo)
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14);
% Abscisas
ylabel ('Parte imaginaria (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ord
grid on;
% Malla
axis ([-2*10^(-3), 2*10^(-3), -3, 3]);
% rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times',
'Fontsize', 12);
hold off;
clear all;
% Elimina las variables utilizadas
en esta rutina
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
Pulso rectangular
El cdigo que sigue permite representar un pulso rectangular de amplitud y periodo dados, centrado en el
origen de coordenadas. Se recomienda prestar una atencin especfica a la forma de definir el intervalo en el
que la funcin tiene un valor no nulo.
%%%%% FUNCIN PULSO RECTANGULAR %%%%%
clear all;
otras rutinas
aal l
% Base de tiempos
% Comienza anulando la funcin
% Amplitud
% Periodo
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
t = -4: 0.001: 4;
y = zeros (1, length(t));
A = 1;
T = 2;
PPDD
FF
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Pulso triangular
El cdigo que sigue permite representar un pulso triangular de amplitud y periodo
definidos por el usuario, centrado en el origen de coordenadas.
PPDD
FF
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
y = zeros (1, length(t));
A = 1;
T = 2;
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Funcin escaln
La rutina que sigue permite representar la funcin escaln. Obsrvese que hay dos posibilidades de definirla;
en realidad, una es la funcin reflejada de la otra (vase ms adelante otro ejemplo de funciones reflejadas).
La rutina tambin permite observar las variaciones de la representacin en funcin de que el parmetro T sea
positivo o negativo. Obsrvese que la discontinuidad se halla a la izquierda del cero para valores negativos de
T y la derecha para valores positivos.
PPDD
FF
aal l
% Ttulo
% Comienza anulando
% Amplitud
% Tiempo de
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
Signo
La rutina siguiente permite representar la funcin signo. En realidad, la rutina, al igual
que ocurre con la destinada a representar la funcin coseno, no hace ms que establecer las
condiciones de representacin por cuanto la funcin est disponible directamente en Matlab.
Obsrvese que, con relacin a esta funcin, podramos obtener cuatro representaciones distintas
similares a las obtenidas en el caso de la funcin escaln. Obsrvese tambin que en la
representacin grfica aparece una pequea discontinuidad en la lnea vertical, que es debida
a que la resolucin utilizada no permite mayor precisin.
%%%%% FUNCIN SIGNO %%%%%
aal l
clear all;
otras rutinas
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
tmin = -4;
tmax = 4;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
A = 1;
y = A*sign(t);
% Funcin
plot (t, y, 'b', 'LineWidth', 2);
% Curva en azul de
grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14);
% Abscisas
ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14);
% Ordenadas
grid on;
% Malla
axis ([(3/4)*tmin, (3/4)*tmax, -2*A, 2*A]);
% rea de dibujo
set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);
set (gca, 'ytick', [-A 0 A], 'YTickLabel', {' -A'; ' 0'; ' A'}, 'FontName', 'Times','Fontsize', 12);
title ('Funcin signo', 'FontName', 'Times', 'Fontsize', 24);
% Ttulo
clear all;
% Elimina las variables utilizadas
en esta rutina
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Sinc
La funcin sinc tambin est disponible directamente en Matlab, con lo que la rutina que sigue tiene por
objeto nicamente establecer las condiciones de la representacin.
PPDD
FF
% Funcin
% Curva en azul de grosor 2
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Funcin combinada
El siguiente ejemplo combina dos funciones en una. A fin de poder utilizar la funcin combinada sin
necesidad de repetirla en otros momentos, el ejemplo consta de dos rutinas. La primera es una funcin que
puede ser invocada desde otras rutinas; su ejecucin aislada no produce ningn resultado. La segunda es la
presentacin de la funcin combinada.
function x = funccomb(t)
n = length(t);
x = zeros(1,n);
i = find(t < 0);
x(i) = 0;
i = find(t > 0 & t < 1);
x(i) = 1 - exp (-t(i));
% Primera funcin
i = find(t >= 1);
x(i) = -exp(-t(i)) + exp(-t(i) + 1);
% Segunda funcin
return;
%%%%% FUNCIN COMBINADA %%%%%
clear all;
% Elimina variables utilizadas en otras
rutinas
T1 = 0;
% Comienzo de la primera funcin
T2 = 1;
% Comienzo de la segunda funcin
% Base de tiempos
tmin = -3;
tmax = 3;
puntos = 1000;
t = linspace(tmin, tmax, puntos);
y = funccomb(t);
% Llama a la funcin
combinada
plot (t, y, 'b', 'LineWidth', 2);
% Curva en azul de
grosor 2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14);
% Abscisas
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
hold on;
yimpar = (y - yy)/2 - 0.005;
% Parte impar
plot (t, yimpar, 'g');
hold on;
ytotal = ypar + yimpar - 0.02;
plot (t, ytotal, 'b', 'Linewidth', 2);
% Suma en
azul de grosor 2
hold off;
title ('Partes par e impar de una funcin', 'FontName', 'Times', 'Fontsize', 24);
% Ttulo
clear all;
% Elimina las variables utilizadas
en esta rutina
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
% Funcin original
% Recuadro
% Abscisas
% Ordenadas
PPDD
FF
% rea de dibujo
% Funcin reflejada
% Recuadro
% Funcin en azul de grosor 2
% Abscisas
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
T = 1;
V = 0.5;
H = 2;
tt = H*(-(t+T));
y = V*funccomb(tt);
% Operacin combinada
subplot (3, 2, 6);
% Recuadro
plot (t, y, 'b', 'LineWidth', 2);
% Funcin en azul de grosor
2
xlabel ('t', 'FontName', 'Times', 'Fontsize', 14);
% Abscisas
ylabel ('Combinacin', 'FontName', 'Times', 'Fontsize', 14);
% Ordenadas
grid on;
% Malla
axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]);
% rea de dibujo
clear all;
% Elimina las variables utilizadas en
esta rutina
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
Funciones peridicas
La primera funcin que vimos en este apartado es peridica (la funcin coseno). Dicha funcin, como otras
trigonomtricas, tiene una definicin establecida en la que la periodicidad est implcita. Sin embargo, para
otras funciones la periodicidad ha de ser definida explcitamente.
Es el caso, por ejemplo, del paso del pulso rectangular a un tren de pulsos rectangulares.
La siguiente rutina ilustra cmo definir esta funcin peridica.
%%%%% TREN DE PULSOS RECTANGULARES %%%%%
clear all;
% Elimina variables utilizadas en otras
rutinas
A = 1;
% Amplitud
P = 2;
% Duracin del pulso
T = 6;
% Periodo
tmin = -7*P;
% Base de tiempos
tmax = 7*P;
puntos = 10000;
t = linspace (tmin, tmax, puntos);
y = zeros (1, length(t));
% Anula la funcin
PPDD
FF
n = 0;
while n*T>tmin
n = n - 1;
end
tc1 = (n: 0)*T;
m = 1;
while m*T<tmax
m = m + 1;
end
tc2 = (0: m)*T;
tc = [tc1 tc2];
k = 1;
PPDD
FF
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
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', 'Fontsize',12);
title ('Tren de pulsos rectangulares', 'FontName', 'Times', 'Fontsize', 24); % Ttulo
clear all;
% Elimina las variables utilizadas
en esta rutina
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
PPDD
FF
Series de Fourier
Sabemos que utilizando el anlisis de Fourier podemos descomponer una seal en sus
componentes armnicos.
si tenemos una seal cuadrada la cual podemos escribir como
aal l
4v 1
4v
1
1
f (t )
senn 0 t
( sen 0 t sen3 0 t sen5 0 t ...)
n 1 n
3
5
t = 0:.1:10;
y = sin(t);
PPDD
FF
plot(t,y),
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Vamos a graficar los armnicos de esta funcin generando uno por uno y posteriormente
haremos un programa para obtenerlos
y = sin(t) + sin(3*t)/3;
plot(t,y)
Primer armnico
aal l
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
Adicin de dos armnicos
PPDD
FF
plot(t,y)
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
x = zeros(size(t));
aal l
y = zeros(10,max(size(t)));
armnicos
PPDD
FF
grid
hold on
x = 0;
for k = 1:2:10
x = x + (4*sin(k*Wo*t))/(pi*k);
y((k+1)/2,:) = x;
plot(t,x), pause
title('componentes armnicos')
% Leccion 1
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
xlabel('tiempo'), ylabel('amplitud')
PPDD
FF
x2=cos(x);
x3=tan(x);
figure(1)
aal l
end
subplot(311),stem(nn,x1)
subplot(312),stem(nn,x2)
subplot(313),stem(nn,x3)
close all;
nn=0:20;p=-1;
x=p*nn/20;
y=2*pi*nn/20;
z=x+j*y;
xx=exp(z);
xc=conj(xx);
x1=abs(xx);
x2=real(xx);
PPDD
FF
x3=imag(xx);
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
clear;
x4=imag(xc);
x5=angle(xx);
aal l
x6=angle(xc);
subplot(321),stem(nn,x1),grid
subplot(322),stem(nn,x2),grid
subplot(324),stem(nn,x4),grid
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
subplot(325),stem(nn,x5),grid
subplot(326),stem(nn,x6),grid
PPDD
FF
xx=exp(z);
x1=real(xx)
x2=imag(xx)
xs=sum(xx)
xp=prod(xx)
aal l
subplot(323),stem(nn,x3),grid
close all;
nn=0:20;p=-1;
x=p*nn/20;
y=2*pi*nn/20;
z=x+j*y;
xx=exp(z);
x1=abs(xx);
x2=sqrt(x1);
PPDD
FF
x3=log10(x1);
x4=log(x1);
x5=x;
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
clear;
aal l
subplot(321),stem(nn,x1),grid
subplot(322),stem(nn,x2),grid
subplot(323),stem(nn,x3),grid
% Leccion 2
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
subplot(325),stem(nn,x5),gris
x1=z;
x2=h;
PPDD
FF
h=nn;
x3=conv(z,h)
aal l
subplot(324),stem(nn,x4),grid
figure(1)
subplot(311),stem(nn,x1)
subplot(312),stem(nn,x2)
% 2.2
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
subplot(313),stem(nn,x3)
aal l
nn=0:40;
USO DE filter(a,b,x)
% b0*y(n)+b1*y(n-1)+b2*y(n-2)+...+bN*y(n-N)=a0*x(n)+a1*x(n-1)+...+aM*x(n-M)
%Haciendo a=[a0 a1 a2 ....aM] , b=[b0 b1 b2....bN]
% x secuencia de entrada , y secuencia de salida
nn=0:20;
x=ones(nn);
PPDD
FF
b=[1 1 1];
a=[1 1 1];
y=filter(a,b,x);
x1=x;
x2=y;
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
subplot(211),stem(nn,x1)
subplot(212),stem(nn,x2)
% 2.3
USO DE filter(1,b,x)
% b0*y(n)+b1*y(n-1)+b2*y(n-2)+...+bN*y(n-N)=x(n)
%Haciendo b=[b0 b1 b2....bN]
PPDD
FF
nn=0:10;
x=ones(nn);
b=[1 1 1]
y=filter(1,b,x);
x1=x;
aal l
figure(2)
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
figure(3)
aal l
x2=y;
subplot(211),stem(nn,x1)
subplot(212),stem(nn,x2)
% 2.4
USO DE filter(a,1,x)
FIR
% y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+...+aM*x(n-M)
PPDD
FF
x=ones(nn);
a=[1 1 1]
y=filter(a,1,x);
x2=y;
figure(4)
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
aal l
x1=x;
subplot(211),stem(nn,x1)
subplot(212),stem(nn,x2)
% 2.5
USO DE rand(1,N)
PPDD
FF
x=rand(1,N);
y=randn(1,N);
x1=x;
x2=y;
figure(5)
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
nn=0:N-1;
subplot(211),stem(nn,x1)
subplot(212),stem(nn,x2)
USO DE xcorr(x)
PPDD
FF
% Ejecuta la autocorrelacin de x
%
USO DE xcorr(x,y)
x3=xcorr(x);
aal l
N=20;
figure(6)
subplot(311),stem(x3)
subplot(312),stem(x4)
PPDD
FF
subplot(313),stem(x5)
www CCr
www.n.reeaa
nuu
aannc tete
cee.c.o 88
cmomTTr r
ii
x5=xcorr(x,y);
aal l
x4=xcorr(y);