Anda di halaman 1dari 59

DESCRIPCION BASICA DEL MATLAB

Elementos bsicos de una representacin grfica


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 estuvieran 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 % Define la base de tiempos

% 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

(que depende de la versin concreta de Matlab de la que se trate) al nmero de elementos que puede contener un vector. Una forma equivalente para definir la base de tiempos consiste en utilizar la instruccin t = linspace (valorinicial, valor final, nmeropuntos) % Define la base de tiempos % valorinicial: primer valor del tiempo para el que queremos representar la funcin % valorfinal: ltimo valor del tiempo para el que queremos representar la funcin % nmeropuntos: nmero de valores del tiempo incluidos en la base de tiempos Obsrvese que ambas formas son completamente equivalentes ya que existe una relacin inmediata entre la separacin entre dos valores de la base de tiempos y el nmero de puntos incluidos en ella. Obviamente, en la instruccin linspace los valores del tiempo estn equiespaciados en la base. Antes de continuar conviene precisar que estas formas de definir la base de tiempos se denominan lineales, ya que la variacin entre los distintos valores del tiempo incluidos en la base es lineal. Existen otras formas de variar los valores del tiempo (o de otras variables) en la base, pero sern tratadas ms adelante. Relacionados con la base de tiempos hay otros aspectos que conviene destacar. El primero de ellos es cmo determinar el nmero total de valores del tiempo incluidos en la base. Para ello puede usarse la instruccin 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

Esta instruccin debe usarse con precaucin. Dependiendo de la base de tiempos y de los redondeos internos del ordenador, puede ocurrir que no haya ningn valor de t que coincida exactamente con t0, con lo cual esta sentencia no producira ningn resultado y las que vayan a continuacin de ella conduciran a resultados no esperados. Las posiciones en la base de tiempo estn numeradas automticamente, de forma que la posicin 1 corresponde al valor inicial y la posicin length(t) corresponde al valor final. En consecuencia, para determinar el valor del tiempo correspondiente a una determinada posicin puede utilizarse la instruccin t(i) % Determina el valor de t que se encuentra en la posicin i en la base de tiempos % i: nmero indicativo de una determinada posicin en la base de tiempos

Representacin de una funcin La definicin previa de la base de tiempos no es necesaria cuando se quiere representar una funcin de la forma ms sencilla posible. sta consiste en definir una funcin mediante un vector de valores de la funcin y luego hacer la representacin en funcin de las posiciones que ocupan dichos valores en el vector correspondiente. Es decir, habramos de ejecutar las instrucciones 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

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

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

% i: color elegido para la representacin de una funcin 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) A falta de indicacin respecto al grosor a utilizar, Matlab representa la funcin automticamente con un grosor de 1 punto.

Edicin: ejes coordenados Otro elemento de edicin es la alteracin de los valores extremos que definen los ejes coordenados. En principio, Matlab establece automticamente los ejes, adjudicando a sus extremos los valores extremos de la base de tiempos y de la funcin. Por ejemplo, si se representa la variacin de una funcin entre los instantes 2.5 s y 7.3 s y dicha variacin est comprendida entre -1.8 y 3, el eje de abscisas de la representacin cubrir el intervalo 2.5- 7.3 s y el eje de ordenadas, el intervalo -1.8-3. Si se desea alterar los lmites de los ejes de coordenadas puede utilizarse la instruccin

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 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 title (texto) % Genera un ttulo para la figura % texto: el texto que se desea que aparezca como ttulo de la figura Con esta instruccin aparece un texto centrado en la parte superior de la figura, fuera del espacio delimitado por los ejes. Naturalmente, las caractersticas particulares de este texto (tipo, tamao y color de letra) pueden ser variadas de la misma forma que se indic anteriormente para otras instrucciones.

Edicin: enmallado de la figura Otra posibilidad de edicin consiste en aadir una malla a la figura. Esto puede conseguirse utilizando simplemente la instruccin 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 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 set (gca, xtick, [x1 x2 ... xn], % Etiqueta los ejes coordenados XTickLabel, {tx1; tx2; ... txn}, % y define una malla ytick, [y1 y2 ... ym], % especificada por el usuario YTickLabel, {ty1; ty2; ... tym}) % x1 x2 ... xn: puntos del eje de abscisas de los cuales han de partir las rectas de la malla % tx1 tx2 ... txn: textos asignados a los puntos del eje de abscisas de los cuales han de partir las rectas de la malla % y1 y2 ... ym: puntos del eje de ordenadas de los cuales han de partir las rectas de la malla % ty1 ty2 ... tym: textos asignados a los puntos del eje de ordenadas de los cuales han de partir las rectas de la malla % Esta instruccin ha de ir precedida de la de grid on Evidentemente, esta instruccin puede incluir las caractersticas de las letras (tipo y tamao) que se desean. Para ello basta incluir las especificaciones correspondientes, indicadas ms arriba, a continuacin de la especificacin de los textos de cada eje.

Obtencin de distintas curvas con una sola rutina En principio, si damos a Matlab las instrucciones para representar distintas curvas como resultado de la ejecucin de una nica rutina, el programa nos presentar slo la ltima. Para poder ver todas las curvas generadas como consecuencia de la ejecucin de la rutina hay distintas posibilidades. La primera de ellas consiste en utilizar la instruccin 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 principioslo se ve la ltima. Desplazando el cuadro correspondiente a sta, aparece a la vista la figuraprecedente. Una alternativa a esta posibilidad consiste en utilizar la instruccin pause on % Genera figuras secuencialmente % Separa los bloques correspondientes a dos figuras En este caso cada figura desaparece antes de ser presentada la siguiente, pero slocuando el usuario pulsa la tecla de retorno; mientras no lo hace, se mantiene la imagen de laltima figura generada. Para evitar la interaccin entre dos programas que contienen estainstruccin 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

% Ha de ir precedida de la sentencia plot correspondiente a la primera funcin a representar % Va seguida de las caractersticas de los ejes y del enmallado Con esta instruccin todas las curvas generadas durante la ejecucin de la rutina sepresentan en una nica figura, cuyas caractersticas de ejes y enmallado son las definidaspara la representacin de la primera curva. A este respecto debe tomarse la precaucin deasegurar previamente que todas las funciones pueden representarse en el cuadrado seleccionadopor la definicin de los ejes (si est presente) correspondientes a la primera figura; siuna de ellas cae fuera del rea de dibujo (la definida por los ejes o la establecida automticamentepor Matlab si tal definicin no est presente), naturalmente no ser representada. Al igual que ocurra con la instruccin pause conviene terminar el programa con lainstruccin 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 subplot (filas, columnas, cuadro) % 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 Combinacin de diversas funciones en una sola En ocasiones se desea combinar dos funciones del tiempo en una sola. Por ejemplo,puede interesarnos combinar las funciones y1 = 3t - 2 e y2 = t + 1 en una nica funciny(t). Una posibilidad es la ya comentada en el epgrafe anterior a propsito de la utilizacinde la sentencia hold on.

Otra posibilidad consiste en definir cada funcin por separado (con su correspondientebase de tiempos, que no tiene por qu ser igual para ambas) y a continuacin aplicar las instrucciones t = [t1 t2 ... tn]; % Combina las bases de tiempo en una sola y = [y1 y2 ... yn]; % Combina las distintas funciones en una sola plot (t, y) % Representa la funcin combinada La diferencia entre ambas posibilidades es que la primera permite observar claramentecualquier discontinuidad que haya entre las funciones que se combinan, mientras que en lasegunda Matlab aade una lnea de conexin entre aqullas, con lo que las discontinuidadesentre ellas, si existen, quedan enmascaradas.

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

Algunas funciones de inters en sistemas lineales

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. 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 %%%%% clear all; % Elimina variables utilizadas en otras rutinas t = -2*10^(-6):10^(-9):2*10^(-6); T = 10^(-6); f = 1/T; funcin w = 2*pi*f; la funcin fase = pi/4; am = 2; y = am*cos(w*t + fase); plot (t, y, 'b', 'LineWidth', 2); azul con grosor 1 axis ([-1.5e-6, 1.5e-6, -2.5, 2.5]); dibujo xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Base de tiempos % Periodo de la funcin % Frecuencia de la % Frecuencia angular de % Fase de la funcin % Amplitud de la funcin % Funcin % La curva aparece en % Define el rea de % Etiq. abs.

ylabel ('coseno de periodo T', 'FontName', 'Times', 'Fontsize', 14) % Etiq. ord. set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto ejes grid on; % Malla set (gca, 'xtick', [-10^(-6) 0 10^(-6)], 'XTickLabel', {'-T'; '0'; 'T'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-2 0 2], 'YTickLabel', {'-A'; '0'; 'A'}); title ('Funcin coseno', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

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. %%%%% FUNCIONES EXPONENCIALES %%%%% clear all; % Elimina variables utilizadas en otras rutinas t = linspace (-2, 2, 1000); % Base de tiempos c = -0.5; % Coeficiente del exponente A = 2; % Coeficiente de la exponencial y1 = A*exp(c*t); % Funcin subplot (2, 2, 1); % Seleccin de recuadro plot (t, y1, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A > 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -1, 7]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize',12); title ('Exponenciales decrecientes', 'FontName', 'Times', 'Fontsize', 24)% Ttulo c = 0.5; % Coeficiente del exponente A = 2; % Coeficiente de la exponencial y2 = A*exp(c*t); % Funcin subplot (2, 2, 2); % Seleccin de recuadro plot (t, y2, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas

ylabel ('A > 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Ejee ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -1, 7]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [0 2], 'YTickLabel', {'0'; 'A'}, 'FontName', 'Times', 'Fontsize',12); title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo c = 0.5; % Coeficiente del exponente A = -2; % Coeficiente de la exponencial y3 = A*exp(c*t); % Funcin subplot (2, 2, 3); % Seleccin de recuadro plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A < 0 c > 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -7, 1]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsize',12) c = -0.5; % Coeficiente del exponente A = -2; % Coeficiente de la exponencial y3 = A*exp(c*t); % Funcin subplot (2, 2, 4); % Seleccin de recuadro plot (t, y3, 'b', 'LineWidth', 2); % Curva en azul con grosor 2 xlabel ('t (segundos)', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('A < 0 c < 0', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas set (gca, 'FontName', 'Times', 'Fontsize', 12); % Texto en ejes grid on; % Malla axis ([-2, 2, -7, 1]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12);

set (gca, 'ytick', [-2 0], 'YTickLabel', {'A'; '0'}, 'FontName', 'Times', 'Fontsize', 12); clear all; % Elimina las variables utilizadas en esta rutina

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). 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) % Operacin elemento a elemento

Mediante el operador .* se multiplican elemento a elemento los componentes de los dos vectores que figuran en la instruccin. Ms adelante veremos otros casos en los que se utilizan operadores precedidos por puntos. %%%%% FUNCIN EXPONENCIAL COMPLEJA (partes real e imaginaria) %%%%% clear all % Elimina variables utilizadas en otras rutinas t = -3*10^(-3): 10^(-5): 3*10^(-3) % Base de tiempos am = 0.5; % Mdulo de la amplitud compleja fase = pi/4; % Fase de la amplitud compleja A = am*exp(j*fase); % Amplitud compleja sigma = 0.5*10^3; % Parte real del coeficiente del exponente T = 10^(-3); % Periodo de la funcin f = 1/T; % Frecuencia w = 2*pi*f; % Frecuencia angular s = sigma + j*w; % Coeficiente del exponente

y = A*exp(s*t); % Funcin subplot (2, 1, 1); % Recuadro parte real plot (t, real(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo) plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('Parte real', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times','Fontsize', 12); title ('Exponencial compleja', 'FontName', 'Times', 'Fontsize', 24) % Ttulo subplot (2, 1, 2); % Recuadro parte imaginaria plot (t, imag(y), 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on plot (t, abs(y), 'r'); % Envolvente de la parte superior (en rojo) plot (t, -abs(y), 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Eje abscisas ylabel ('Parte imaginaria', 'FontName', 'Times', 'Fontsize', 14); % Eje ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times', 'Fontsize', 12); hold off

clear all; en esta rutina

% Elimina las variables utilizadas

%%%%% FUNCIN EXPONENCIAL COMPLEJA (influencia de los parmetros) %%%%% clear all; % Elimina variables utilizadas en otras rutinas t = -3*10^(-3): 10^(-5): 3*10^(-3); % Base de tiempos am = 0.5; % Mdulo de la amplitud compleja fase = 0; % Fase de la amplitud compleja A = am*exp(j*fase); % Amplitud compleja sigma = 0.5*10^3; % Parte real del coeficiente del exponente T = 10^(-3); % Periodo de la funcin f = 1/T; % Frecuencia w = 2*pi*f; % Frecuencia angular s = sigma + j*w; % Coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*cos(w*t + fase); % Funcin subplot (2, 2, 1); % Recuadro parte real plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte real (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times','Fontsize', 12); title ('Exponenciales crecientes', 'FontName', 'Times', 'Fontsize', 24) % Ttulo

sigma = -0.5*10^3; % Parte real del coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*cos(w*t + fase); % Funcin subplot (2, 2, 2); % Recuadro parte real plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo) xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte real (sigma < 0)', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times','Fontsize', 12); title ('Exponenciales amortiguadas', 'FontName', 'Times', 'Fontsize', 24) % Ttulo sigma = 0.5*10^3; % Parte real del coeficiente del exponente env = A*exp(sigma*t); % Envolvente superior y = A*exp(sigma*t).*sin(w*t + fase); % Funcin subplot (2, 2, 3); % Recuadro parte imaginaria plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 hold on; plot (t, env, 'r'); % Envolvente de la parte superior (en rojo) plot (t, -env, 'r'); % Envolvente de la parte inferior (en rojo)

xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Parte imaginaria (sigma > 0)', 'FontName', 'Times', 'Fontsize', 14); % Ord grid on; % Malla axis ([-2*10^(-3), 2*10^(-3), -3, 3]); % rea de dibujo set (gca, 'xtick', [0], 'XTickLabel', {'0'}, 'FontName', 'Times', 'Fontsize', 12); set (gca, 'ytick', [-0.5 0.5], 'YTickLabel', {' -a'; ' a'}, 'FontName', 'Times','Fontsize', 12); 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

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 % Elimina variables utilizadas en

t = -4: 0.001: 4; y = zeros (1, length(t)); A = 1; T = 2;

% Base de tiempos % Comienza anulando la funcin % Amplitud % Periodo

% Rango de valores de t para los que la funcin no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-3, 3, -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName','Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize',12); title ('Pulso rectangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

Pulso triangular El cdigo que sigue permite representar un pulso triangular de amplitud y periodo definidos por el usuario, centrado en el origen de coordenadas. %%%%% FUNCIN PULSO TRIANGULAR %%%%% clear all otras rutinas % Base de tiempos tmin = -4; tmax = 4; puntos = 10000; t = linspace (tmin, tmax, puntos); y = zeros (1, length(t)); A = 1; T = 2; % Elimina variables utilizadas en

% Comienza anulando la funcin % Amplitud % Periodo

% Rango de valores de t para los que la funcin no es nula rango = find ((t >= -T/2) & (t <= T/2)); y(rango) = A*(1 - abs(t(rango))/(T/2)); % Funcin en el rango de tiempo no nulo plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Amplitud', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-1.5*T, 1.5*T, -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [-T/2 0 T/2], 'XTickLabel', {'-T/2', '0', 'T/2'}, 'FontName','Times', 'Fontsize', 12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize',12); title ('Pulso triangular', 'FontName', 'Times', 'Fontsize', 24) % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

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. %%%%% FUNCIN ESCALN %%%%% clear all; % Elimina variables utilizadas en otras rutinas % Base de tiempos tmin = -4; tmax = 4; puntos = 1000; t = tmin: 1/puntos: tmax; y = zeros (1, length(t)); % Comienza anulando la funcin A = 1; % Amplitud T = 2; % Tiempo de discontinuidad % Rango de valores de t para los que la funcin no es nula rango = find (t >= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo subplot (2, 2, 1); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize',12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize',12);

title ('Escaln u(t - T)', 'FontName', 'Times', 'Fontsize', 24); y = zeros (1, length(t)); la funcin A = 1; T = -2; discontinuidad

% Ttulo % Comienza anulando % Amplitud % Tiempo de

% Rango de valores de t para los que la funcin no es nula rango = find (t >= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo subplot (2, 2, 3); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T < 0', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [T 0], 'XTickLabel', {'T', '0'}, 'FontName', 'Times', 'Fontsize',12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize',12); y = zeros (1, length(t)); % Comienza anulando la funcin A = 1; % Amplitud T = 2; % Tiempo de discontinuidad % Rango de valores de t para los que la funcin no es nula rango = find (t <= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo subplot (2, 2, 2); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas

ylabel ('T > 0', 'FontName', 'Times', 'Fontsize', 14) % Ordenadas grid on; % Malla axis ([-1.5*abs(T), 1.5*abs(T), -A/2, 2*A]); % rea de dibujo set (gca, 'xtick', [0 T], 'XTickLabel', {'0', 'T'}, 'FontName', 'Times', 'Fontsize',12); set (gca, 'ytick', [0 A], 'YTickLabel', {' 0'; ' A'}, 'FontName', 'Times', 'Fontsize',12); title ('Escaln u(T - t)', 'FontName', 'Times', 'Fontsize', 24); % Ttulo y = zeros (1, length(t)); % Comienza anulando la funcin A = 1; % Amplitud T = -2; % Tiempo de discontinuidad % Rango de valores de t para los que la funcin no es nula rango = find (t <= T); y(rango) = A; % Valor de la funcin en el rango de tiempo no nulo subplot (2, 2, 4); plot (t, y, 'b', 'LineWidth', 2); % Curva en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('T < 0', 'FontName', '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', 'Fontsize',12); clear all; % Elimina las variables utilizadas en esta rutina

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 %%%%%

clear all; otras rutinas % Base de tiempos

% Elimina variables utilizadas en

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

Sinc La funcin sinc tambin est disponible directamente en Matlab, con lo que la rutina que sigue tiene por objeto nicamente establecer las condiciones de la representacin. %%%%% FUNCIN SINC %%%%% clear all; rutinas % Base de tiempos tmin = -8; tmax = 8; puntos = 10000; t = linspace (tmin, tmax, puntos); A = 1; y = A*sinc(t); plot (t, y, 'b', 'LineWidth', 2); % Elimina variables utilizadas en otras

% Funcin % 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-size', 12); title ('Funcin sinc', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

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

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', 'Fontsize',12); set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12); title ('Funcin combinada', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

Partes par e impar de una funcin La rutina siguiente muestra cmo obtener las partes par e impar de una funcin. La funcin considerada es la funccomb que hemos definido ms arriba. Obsrvese que hemos introducido un pequeo desplazamiento vertical en cada una de las curvas representadas a fin de que puedan ser mostradas todas en la figura. %%%%% PARTES PAR E IMPAR DE UNA FUNCIN %%%%% clear all; % Elimina variables utilizadas en otras rutinas T1 = 0; % Comienzo de la primera funcin T2 = 1; % Comienzo de la segunda funcin % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t) + 0.02; % Funcin original plot (t, y, 'k'); % Funcin en negro hold on; xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Funcin (negro), Par (rojo), Impar (verde), Suma (azul)', 'FontName', '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 set (gca, 'xtick', [T1 T2], 'XTickLabel', {'T1'; 'T2'}, 'FontName', 'Times', 'Fontsize',12); set (gca, 'ytick', [0], 'YTickLabel', {' 0'}, 'FontName', 'Times', 'Fontsize', 12); tt = -t; yy = funccomb(tt); ypar = 0.005 + (y + yy)/2; % Parte par plot (t, ypar, 'r');

hold on; yimpar = (y - yy)/2 - 0.005; % Parte impar plot (t, yimpar, 'g'); hold on; ytotal = ypar + yimpar - 0.02; plot (t, ytotal, 'b', 'Linewidth', 2); % Suma en azul de grosor 2 hold off; title ('Partes par e impar de una funcin', 'FontName', 'Times', 'Fontsize', 24); % Ttulo clear all; % Elimina las variables utilizadas en esta rutina

Reflexin, desplazamiento y escalado de una funcin La rutina que sigue permite realizar diversas operaciones (reflexin, escalados horizontal y vertical, desplazamiento) con una funcin, as como combinar todas o algunas de estas operaciones. La funcin elegida como ejemplo es la funccomb descrita anteriormente. En este caso, al contrario que en los precedentes, no se han etiquetado los ejes, a fin de que el etiquetado automtico realizado por Matlab permita comprobar el efecto de cada operacin. %%%%% OPERACIONES CON UNA FUNCIN %%%%% clear all; otras rutinas T1 = 0; T2 = 1; % Base de tiempos tmin = -3; tmax = 3; puntos = 1000; t = linspace(tmin, tmax, puntos); y = funccomb(t); subplot (3, 2, 1); plot (t, y, 'b', 'LineWidth', 2); xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); ylabel ('Original', 'FontName', 'Times', 'Fontsize', 14); grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); tt = -t; y = funccomb(tt); subplot (3, 2, 2); plot (t, y, 'b', 'LineWidth', 2); xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Elimina variables utilizadas en % Comienza la primera funcin % Comienza la segunda funcin

% Funcin original % Recuadro % Funcin en azul de grosor 2 % Abscisas % Ordenadas % rea de dibujo % Funcin reflejada % Recuadro % Funcin en azul de grosor 2 % Abscisas

ylabel ('Reflexin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo V = 0.5; y = V*funccomb(t); % Funcin con escalado vertical subplot (3, 2, 3); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Escalado y', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo H = 2; tt = H*t; y = funccomb(tt); % Funcin con escalado horizontal subplot (3, 2, 4); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Escalado t', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo T = 1; tt = t+T; y = funccomb(tt); % Funcin desplazada subplot (3, 2, 5); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Desplazamiento', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo

T = 1; V = 0.5; H = 2; tt = H*(-(t+T)); y = V*funccomb(tt); % Operacin combinada subplot (3, 2, 6); % Recuadro plot (t, y, 'b', 'LineWidth', 2); % Funcin en azul de grosor 2 xlabel ('t', 'FontName', 'Times', 'Fontsize', 14); % Abscisas ylabel ('Combinacin', 'FontName', 'Times', 'Fontsize', 14); % Ordenadas grid on; % Malla axis ([(3/4)*tmin, (3/4)*tmax, -(2/3)*max(y), (3/2)*max(y)]); % rea de dibujo clear all; % Elimina las variables utilizadas en esta rutina

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 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; % Nmero de periodos para t < 0

% Instantes centrales de los pulsos % Nmero de periodos para t > 0

% Instantes centrales de los pulsos % Instantes centrales de todos los pulsos % 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', 'Fontsize',12); title ('Tren de pulsos rectangulares', 'FontName', 'Times', 'Fontsize', 24);% Ttulo clear all; % Elimina las variables utilizadas en esta rutina

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

4v g 1 1 4v 1 f (t ) ! n senn[ 0 t ! T ( sen[ 0 t  3 sen3[ 0 t  5 sen5[ 0 t  ...) T n !1


Vamos a graficar los armnicos de esta funcin generando uno por uno y posteriormente haremos un programa para obtenerlos t = 0:.1:10; y = sin(t); plot(t,y),

Primer armnico y = sin(t) + sin(3*t)/3; plot(t,y)

Adicin de dos armnicos y = sin(t) + sin(3*t)/3 + sin(5*t)/5 + sin(7*t)/7 + sin(9*t)/9; plot(t,y)

adicin de tres armnicos t = 0:.02:3.14;

y = zeros(10,max(size(t))); %abriendo espacio para almacenar los valores de los armnicos x = zeros(size(t)); % programa para generar los armnicos de una seal cuadrada %Programa para obtener los armnicos de una seal cuadrada %con un periodo de T = 1 seg T = 1; Wo = 2*pi/T; t = 0:0.001:pi; y = square(2*pi*t/T); plot(t,y,'r-') grid hold on x = 0; fork = 1:2:10 x = x + (4*sin(k*Wo*t))/(pi*k); y((k+1)/2,:) = x; plot(t,x), pause

end title('componentes armnicos') xlabel('tiempo'), ylabel('amplitud')

% Leccion 1 % 1.1 USO DE sin(x),cos(x),tan(x) clear; closeall; nn=0:20; x=2*pi*nn/20; x1=sin(x); x2=cos(x); x3=tan(x); figure(1) subplot(311),stem(nn,x1) subplot(312),stem(nn,x2) subplot(313),stem(nn,x3)

% 1.2USO DE exp(z),abs(z),real(z),imag(z),angle(x),conj(x) clear; closeall; 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); x3=imag(xx); x4=imag(xc); x5=angle(xx); x6=angle(xc); subplot(321),stem(nn,x1),grid subplot(322),stem(nn,x2),grid

subplot(323),stem(nn,x3),grid subplot(324),stem(nn,x4),grid subplot(325),stem(nn,x5),grid subplot(326),stem(nn,x6),grid % 1.3 USO DE sum(z),prod(z) clear; closeall; nn=0:5;p=-1; x=p*nn/20; y=2*pi*nn/20; z=x+j*y; xx=exp(z); x1=real(xx) x2=imag(xx) xs=sum(xx) xp=prod(xx)

% 1.4 USO DE log(x),log10(x),sqrt(x) clear; closeall; 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); x3=log10(x1); x4=log(x1); x5=x; subplot(321),stem(nn,x1),grid subplot(322),stem(nn,x2),grid subplot(323),stem(nn,x3),grid

subplot(324),stem(nn,x4),grid subplot(325),stem(nn,x5),gris % Leccion 2 % 2.1 USO DE conv(z,h) clear; closeall; nn=0:20;p=0;m=0; x=p*nn/20; y=2*pi*nn/20*m; z=exp(x+j*y); h=nn; x1=z; x2=h; x3=conv(z,h) figure(1) subplot(311),stem(nn,x1) subplot(312),stem(nn,x2)

nn=0:40; subplot(313),stem(nn,x3)

% 2.2USO DE filter(a,b,x) % Resuelve ecuaciones de diferencias tipo: % 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); b=[1 1 1]; a=[1 1 1]; y=filter(a,b,x);

x1=x; x2=y;

figure(2) subplot(211),stem(nn,x1) subplot(212),stem(nn,x2)

% 2.3USO DE filter(1,b,x) % Resuelve ecuaciones de diferencias tipo: % b0*y(n)+b1*y(n-1)+b2*y(n-2)+...+bN*y(n-N)=x(n) %Haciendo b=[b0 b1 b2....bN] % x secuencia de entrada y y secuencia de salida nn=0:20; x=ones(nn); b=[1 1 1] y=filter(1,b,x);

x1=x;

x2=y;

figure(3) subplot(211),stem(nn,x1) subplot(212),stem(nn,x2)

% 2.4USO DE filter(a,1,x)

FIR

% Resuelve ecuaciones de diferencias tipo: % y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+...+aM*x(n-M) %Haciendo a=[a0 a1 a2....aM] % x secuencia de entrada y y secuencia de salida nn=0:20; x=ones(nn); a=[1 1 1] y=filter(a,1,x);

x1=x; x2=y;

figure(4) subplot(211),stem(nn,x1) subplot(212),stem(nn,x2)

% 2.5USO DE rand(1,N) % Generador de nmeros casuales con distribucin uniforme entre 0 y 1 % USO DE randn(1,N)

% Generador de nmeros casuales con distribucin Gauss con promedio 0 % y varianza 1 % x secuencia de salida ; y secuencia de salida

N=20; nn=0:N-1; x=rand(1,N); y=randn(1,N); x1=x; x2=y; figure(5) subplot(211),stem(nn,x1) subplot(212),stem(nn,x2)

USO DE xcorr(x)

% Ejecuta la autocorrelacin de x % USO DE xcorr(x,y)

% Ejecuta la correlacin cruzada entre x e y

x3=xcorr(x);

x4=xcorr(y); x5=xcorr(x,y); figure(6) subplot(311),stem(x3) subplot(312),stem(x4) subplot(313),stem(x5)