Está en la página 1de 12

PRCTICAS DE AUTOMTICA Introduccin al MATLAB (I).

Ejercicios de matrices, vectores, polinomios y grficos.

Operador ()

Descripcin Se utilizan para especificar el orden de evaluacin de las expresiones, para referirse a un elemento de una matriz y para contener los parmetros en las llamadas a una funcin. Antepuesto a otro operador fuerza su evaluacin elemento a elemento. Divisin matricial por la izquierda: A\B equivale a A-1B. Divisin matricial por la derecha: A/B equivale a AB-1. Es usado para especificar rangos, generar vectores especiales, extraer rangos de matrices y para indicar todos los elementos. Se utiliza para separar los elementos de las diferentes filas de una matriz. Se incluye al final de la lnea de comandos para evitar la respuesta a un comando ejecutado. Se utilizan para definir matrices. Si se asigna el valor [] a todos los elementos de una fila o columna de una matriz se produce su eliminacin. Operador potencia: 2^4 es la cuarta potencia de 2. Operador traspuesta: A' calcula la matriz traspuesta de la matriz constituida por los conjugados de los elementos de la matriz A. A.' Calcula la matriz traspuesta de la matriz A. Tabla 1. Algunos Operadores Habituales.

. \ / : ;

[] ^ '

Comando clc format help Borra la ventana de comandos.

Descripcin

Establece el formato de presentacin de los datos en la consola. Muestra la lista de comandos propios de Matlab y de los comandos externos vinculados a los ficheros .m presentes en el camino de bsqueda actual. La expresin help <comando> muestra la ayuda asociada al comando. La expresin lookfor <texto> muestra una lista de las funciones relacionadas con el texto indicado. Muestra la lista de variables del espacio de trabajo. Muestra la lista de variables del espacio de trabajo con informacin adicional. Tabla 2. Algunos comandos relacionados con el entorno de Matlab.
1

lookfor who whos

Funcin abs all any conv cos deconv exp find

Descripcin Si se aplica a un nmero real calcula su valor absoluto y si se aplica a un nmero complejo calcula su mdulo. Devuelve verdad (uno) si todos los elementos del vector al que se aplica esta funcin son verdad (distintos de cero). Devuelve verdad (uno) si algn elemento del vector al que se aplica esta funcin es verdad (distinto de cero). Calcula el producto de dos polinomios. Calcula el coseno de una cantidad expresada en radianes. Calcula el cociente y el resto de la divisin de dos polinomios. Aplica la funcin exponencial. Devuelve un vector con los ndices de todos los elementos no nulos del vector al que se aplica. find(a>100) devuelve los ndices de todos los elementos del vector a que son mayores que 100. Calcula el valor de la variable independiente para el cual una funcin matemtica alcanza el valor mnimo para un intervalo determinado de la referida variable. La funcin considerada debe indicarse entre comillas simples. Calcula el logaritmo neperiano. Calcula el logaritmo decimal. Calcula el valor mximo de los elementos de un vector. Si se desea, permite conocer en qu posicin del vector se encuentra el elemento de valor mximo. Calcula el valor mnimo de los elementos de un vector. Si se desea, permite conocer en qu posicin del vector se encuentra el elemento de valor mnimo. Genera el polinomio caracterstico de una matriz. Genera el vector de coeficientes de un polinomio a partir de un vector que contiene sus races. Obtiene la integral definida de una funcin matemtica por aproximacin cuadrtica (mtodo de Simpson). La funcin considerada debe indicarse entre comillas simples. Obtiene la integral definida de una funcin matemtica por aproximacin cuadrtica (mtodo de Lobatto). La funcin considerada debe indicarse entre comillas simples. Calcula el resto de una divisin. Calcula las races de un polinomio a partir de su vector de coeficientes. Calcula el seno de una cantidad expresada en radianes. Calcula la raz cuadrada. Tabla 3. Algunas funciones matemticas interesantes.
2

fminbnd

log log10 max

min

poly quad

quadl

rem roots sin sqrt

Funcin axis clf figure ginput grid hold loglog plot

Descripcin Permite especificar los valores mximos y mnimos representados en los ejes de un grfico y controlar si se visualizan stos junto al mismo. Borra la ventana grfica activa. Abre una ventana grfica y le asigna el papel de ventana grfica activa. Permite extraer, utilizando el ratn, las coordenadas de una serie de puntos situados sobre un grfico. La activacin de la tecla return finaliza el proceso. Muestra una rejilla sobre la grfica situada en la ventana grfica activa. hold on hace que todos los grficos sucesivos cuyo trazado sea ordenado se incluyan en la ventana grfica activa. hold off deshace este efecto. Funcin equivalente a plot en la que tanto el eje de abcisas como el de ordenadas se representan en escala logartmica decimal. Genera un grfico bidimensional sobre ejes cartesianos en la ventana grfica activa. Si no hay una ventana grfica activa, la crea antes de trazar el grfico. plot(x,y) representa el vector y como una funcin del vector x. representa, en la misma ventana grfica utilizando los mismos ejes, cada una de las columnas de la matriz y como una funcin del vector x. Cada grfica se muestra en un color diferente. representa, en la misma ventana grfica utilizando los mismos ejes, cada una de las columnas de la matriz y como una funcin de la columna de la matriz x de igual ndice. Cada grfica se muestra en un color diferente. plot(x1,y1,x2,y2) permite representar varias grficas en la misma ventana grfica utilizando los mismos ejes. Cada grfica se muestra en un color diferente. plot(x,y,formato) permite especificar el estilo y el color de la grfica: lnea continua (por defecto): amarillo (yellow): y lnea discontinua (rayas): -magenta: m lnea discontinua (puntos): : azul celeste (cyan): c lnea discontinua (puntos y rayas): -. rojo: r sin lneas (slo marcas x): x verde (green): g sin lneas (slo marcas .): . azul (blue) (por defecto): b sin lneas (slo marcas +): + blanco (white): w negro: k sin lneas (slo marcas *): * sin lneas (slo marcas o): o plot(x1,y1,formato1,x2,y2,formato2) permite especificar el estilo y el color de cada una de las grficas representadas. plot(y) representa el vector y de nmeros reales utilizando como abcisas los ndices de cada uno de sus elementos. representa la parte imaginaria de los elementos del vector y de nmeros complejos en funcin de su parte real.

Funcin semilogx semilogy subplot

Descripcin Funcin equivalente a plot en la que el eje de abcisas se representa en escala logartmica decimal. Funcin equivalente a plot en la que el eje de ordenadas se representa en escala logartmica decimal. Divide la ventana grfica activa en una serie de particiones horizontales y verticales y activa una de ellas. Si no hay una ventana grfica activa, la crea. subplot(m,n,i): divide la ventana en m filas con n grficos en cada una de ellas y activa el isimo grfico. Pone un ttulo a una grfica. Pone un texto junto al eje de abcisas de una grfica. Pone un texto junto al eje de ordenadas de una grfica. Tabla 4. Algunas funciones relacionadas con grficos.

title xlabel ylabel

Archivos de Comandos:
Los archivos de comandos (archivos script) almacenan secuencias de sentencias. Se utilizan para llevar a cabo operaciones que involucran a mltiples sentencias, con objeto de evitar que cuando exista un error en alguna de ellas haya que reescribir y reejecutar todas las que le siguen. Asimismo, este tipo de archivos se puede utilizar simplemente para almacenar una secuencia de sentencias para la que se prev una futura reutilizacin. Los archivos de comandos tienen una extensin '.m' y pueden crearse en el editor que incorpora el entorno de Matlab (File/New/M-file). En el nombre del archivo no pueden emplearse espacios ni guiones (-). Los archivos de comandos pueden y deben incluir comentarios explicativos sobre su funcionamiento y la informacin que generan. Las lneas de comentarios ubicadas por delante de la primera lnea de programa de un archivo de comandos se muestran en la ventana de comandos de Matlab cuando en sta se ejecuta el comando help seguido del nombre del archivo de comandos (excluyendo su extensin). Las lneas de comentarios y, en general, los comentarios comienzan con el carcter '%' y terminan con el siguiente salto de lnea. La ejecucin de un archivo de comandos puede ordenarse, o bien desde la ventana de comandos (escribiendo una sentencia con el nombre del fichero sin extensin), o bien directamente desde el editor del entorno de Matlab. Para que dicha ejecucin sea viable, el directorio en el que el que est almacenado el archivo de comandos considerado debe estar incluido en la lista de caminos de bsqueda de Matlab (File/Set path). Todas las variables creadas durante la ejecucin de un archivo de comandos permanecen en el espacio de trabajo de Matlab una vez finalizada sta.

A) Ejercicios de matrices y vectores.


3 4 1 2 5 6 8 7 . 1. Crear la matriz A, tal que: A = 9 10 11 12 13 14 15 16 2. Crear el vector v, tal que: v t = 1 2 3 4 .

1 + i 2 + 2i 3. Crear la matriz B, tal que: B = . 3 + 3i 4 + 4i 4. Calcular, a partir de la matriz A, una nueva matriz C, tal que: C = A t . 5. Calcular, a partir de la matriz A y el vector v, el producto: A * v . 6. Calcular, a partir de la matriz A y el vector v, una nuevas matrices x1 y x2, tales que:

A * x1 = v t . x2 * A = v 7. Calcular, a partir de la matriz A, una nueva matriz AA, tal que: AA = A 2 . 8. Crear, a partir del intervalo [0, 10], un vector u que contenga toda la serie de valores reales comprendidos en el intervalo referido que resultan de la consideracin de incrementos de una dcima entre cada dos elementos consecutivos. 9. Obtener una matriz constituida por las filas 1 y 4 de la matriz A. 10. Obtener la matriz resultante de la eliminacin de la columna 2 de la matriz C. 11. Calcular, a partir de la matriz A, una nueva matriz D que contenga un cero (uno) en el lugar en el que la matriz A contenga un nmero par (impar). 12. Calcular, a partir de la matriz A, una nueva matriz E constituida por las filas completas de la matriz A que contengan mltiplos de 6.

B) Ejercicios de polinomios.
13. Calcular, a partir de la matriz A, un vector p constituido por los coeficientes del polinomio caracterstico de la matriz A. 14. Calcular, a partir del vector p constituido por los coeficientes del polinomio caracterstico de la matriz A, un nuevo vector r constituido por las races de dicho polinomio. 15. Calcular, a partir del vector r, un nuevo vector p1 constituido por los coeficientes de un polinomio cuyas races son los elementos del vector r. Comprobar que el vector p1 obtenido coincide con el vector p calculado anteriormente.

16. Calcular, a partir de los vectores p y p1, un nuevo vector p2 constituido por los coeficientes del polinomio producto de los polinomios cuyos coeficientes son los trminos de los vectores p y p1. 17. Calcular, a partir de los vectores p1 y p2, unos nuevos vectores coc y res constituidos, respectivamente, por los coeficientes de los polinomios cociente y resto de la divisin del polinomio cuyos coeficientes son los trminos del vector p2 entre el polinomio cuyos coeficientes son los trminos del vector p1.

C) Ejercicios de grficos.
18. Obtener una representacin grfica de la funcin y = sen para los valores de
comprendidos en el intervalo [-2, 8], con una resolucin de un grado, y marcar en la misma con un * el punto en el que sta alcanza un mnimo en el intervalo de comprendido entre 0 y 10. Asimismo, obtener la integral definida de dicha funcin en el intervalo de comprendido entre 1 y 2. 19. Obtener una representacin grfica de las funciones y = 3 sen , y = 4 cos y la suma de ambas para los valores de comprendidos en el intervalo [0, 4], con una resolucin de un grado, en cada una de las formas siguientes: a) En una nica ventana grfica utilizando los mismos ejes y colores diferentes. b) En una nica ventana grfica utilizando ejes diferentes alineados horizontalmente. c) En tres ventanas grficas diferentes que podrn visualizarse simultneamente en la pantalla. 20. Se desea representar grficamente la funcin y = 5 log10 x para los valores de x comprendidos en el intervalo [0.1, 10], con una resolucin de una dcima. Obtener en una nica ventana grfica, utilizando ejes diferentes alineados verticalmente, una representacin de dicha funcin en cada una de las formas siguientes: a) Utilizando escalas lineales en ambos ejes. b) Utilizando escala logartmica decimal para el eje de abcisas y escala lineal para el eje de ordenadas.

PRCTICAS DE AUTOMTICA Introduccin al MATLAB (II).


Ejercicios de creacin y utilizacin de funciones.

Las funciones son secuencias de sentencias que ejecutan una tarea independiente. El entorno de Matlab incluye una importante coleccin de funciones predefinidas y permite crear otras nuevas. El principal inters de la creacin y uso de funciones confeccionadas a medida de las necesidades de un usuario de Matlab reside en la posibilidad de construir programas parametrizables y, si se desea, organizarlos en libreras para su futura utilizacin. Las secuencias de sentencias que conforman una nueva funcin se deben almacenar en un fichero de extensin '.m', cuyo nombre define el nombre de la nueva funcin. En dicho nombre no pueden emplearse espacios ni guiones (-). Aunque su extensin es la misma, no deben confundirse los archivos de funciones con los ficheros de comandos (script), que tienen unas caractersticas claramente diferentes. Las funciones pueden y deben incluir comentarios explicativos sobre su funcionamiento, sus parmetros de entrada y salida y el formato de llamada a las mismas. Las lneas de comentarios ubicadas por delante de la primera lnea de programa de una funcin se muestran en la ventana de comandos cuando en sta se ejecuta el comando help seguido del nombre de la funcin. Las lneas de comentarios y, en general, los comentarios comienzan con el carcter '%' y terminan con el siguiente salto de lnea. La primera lnea de comandos del fichero que almacena una funcin debe contener la definicin sintctica de la misma, especificando, si los hubiere, sus diferentes parmetros de entrada y salida. Dicha definicin se realiza empleando el comando function en la forma siguiente: function [ parmetros_salida ] = nombre( parmetros_entrada ) Definicin de funciones Ejemplos de definicin de funciones: function ejemplo1( ) : sin parmetros de entrada o salida. function ejemplo2( p_ent1 ) : 1 parmetro de entrada y ninguno de salida. function p_sal1 = ejemplo3( p_ent1, p_ent2 ) : 2 parmetros de entrada y 1 de salida. function [ p_sal1, p_sal2 ] = ejemplo4( p_ent1, p_ent2, p_ent3 ) : 3 entradas y 2 salidas.

Es importante tener en consideracin que el nombre de la funcin que aparece en su definicin sintctica debe coincidir con el del fichero que la contiene (excluida su extensin). El empleo de una funcin puede realizarse o bien mediante instrucciones de llamada a la misma o bien hacindola intervenir en expresiones matemticas o lgicas. Para ello deber emplearse un formato de instruccin conforme a la definicin sintctica indicada en la propia funcin (excluyendo el comando function). Dichas instrucciones en las que intervienen funciones podrn ubicarse o bien en otras funciones, o bien en archivos de comandos, o bien en la ventana de comandos de Matlab. Todas las variables definidas en una funcin son locales y se destruyen una vez finalizada la ejecucin de la misma, salvo que estn declaradas como globales. La finalizacin de la ejecucin de una funcin se produce cuando se ejecuta su ltima sentencia, si bien puede forzarse su abandono desde cualquier punto de ella, utilizando el comando return.

if condicin else elseif condicin end for vble = vector end

Ejecucin condicional de un bloque. (opcional) (opcional) Repeticin de un bloque tantas veces como elementos tenga el vector. En cada iteracin se le asigna a la variable el valor de uno de los elementos del vector. Se ejecuta indefinidamente un bloque mientras la condicin sea verdadera. Sentencias de control de flujo de ejecucin

while condicin end

disp( variable ) disp( mensaje ) fprintf( 'formato', lista )

: : :

Muestra el valor de la variable en la ventana de comandos. Muestra el mensaje en la ventana de comandos. Salida formateada de una lista de variables en la ventana de comandos (formato estndar de C). String, entero, real, Salto de lnea, Muestra el mensaje en la ventana de comandos y despus asigna a la variable sal un valor introducido por teclado. Detiene la ejecucin del programa hasta que se pulse una tecla.

%s, %d, %f, \n, sal = input( 'mensaje' )

: : :

Funciones para entrada y salida

pause

1. La siguiente funcin tiene como parmetro de entrada un vector y ha sido concebida para calcular, a partir de l, la media y la desviacin tpica de sus componentes. Los resultados obtenidos constituyen los parmetros de salida de la funcin y son mostrados en la ventana de comandos. function [ media, desvtip ] = desv( x ) n = length( x ); media = sum( x ) / n; desvtip= sqrt( sum( (x - media).^2 ) / n ); % salida formateada fprintf( 'Media : %f \n', media ); fprintf( 'Desviacin Tpica : %f \n', desvtip ); Se pide: a) Crear esta funcin y habilitar su empleo desde el entorno de trabajo de Matlab. b) Utilizar dicha funcin para calcular la media y la desviacin tpica de los vectores generados mediante las siguientes instrucciones de Matlab: b.1) b.2) [-10:10] [2 2 3 4 3 2 5 5]

2. Crear una funcin que tenga como parmetro de entrada el vector de coeficientes de un polinomio y, a partir de l, represente grficamente la funcin matemtica asociada a dicho polinomio (para los valores de la variable independiente contenidos en el vector generado por el siguiente comando de Matlab: [-5:0.1:5]) y genere un vector que constituya su parmetro de salida y contenga las races del referido polinomio. Utilizar dicha funcin para representar grficamente y calcular las races de los siguientes polinomios (las cuales se indican adjuntas a cada uno de ellos): P1( x ) = x3 + 2 x2 8 x P2( x ) = x4 + x3 - 26.25 x2 - 20.25 x + 121.5 P3( x ) = x2 - 9 [ -4, 0, 2 ] [ -4.5, -3, 2, 4.5 ] [ -3, 3 ]

Sugerencia: Utilizar una instruccin de un formato anlogo al siguiente para mostrar en la ventana de comandos las races del polinomio considerado: fprintf( 'Raiz %d = %f\n', [ [ 1 : length( raices ) ]', raices ]' );

3. Obtener una versin modificada de la funcin creada en el ejercicio anterior en la que se incorpore como novedad el marcado con un asterisco () de las races de polinomio considerado en la representacin grfica del mismo. Utilizar dicha funcin para representar grficamente y calcular las races de los mismos polinomios que se indicaron en el ejercicio anterior.

4. Crear una funcin que obtenga, a partir de una nube de puntos, una representacin grfica de sta y calcule y represente grficamente la recta de regresin de mnimos cuadrados que ms se ajuste a la misma. La cabecera de esta funcin deber ser de la forma: function [ a, b ] = ajuste( x, y ) donde x e y son los vectores cuyas componentes de igual ndice contienen, respectivamente, los valores de las abcisas y las ordenadas de los puntos de la nube; y a y b son, respectivamente, los valores de la pendiente y el trmino independiente de la recta de regresin pedida. Como es bien conocido, la recta de regresin de mnimos cuadrados correspondiente a una nube de puntos, de coordenadas de la forma (xi, yi), puede describirse mediante una expresin de la forma: y=ax+b Donde a y b se calculan as: Siendo:

a=

n Sxy Sx Sy 2 n Sxx (Sx )

b=

Sxx Sy Sx Sxy 2 n Sxx (Sx )

n = nmero de puntos Sx = xi Sy = yi Sxx = xi2 Syy = yi2 Sxy = (xi yi)

La funcin pedida deber representar grficamente, como se indic anteriormente, tanto los puntos de la nube, mediante asteriscos (), como la recta de regresin calculada. Para ello se sugiere utilizar instrucciones de Matlab con un formato anlogo al siguiente: plot( x, y, ) ; hold on ; plot( [ min( x ) , max( x ) ], [ a min( x ) + b , a max( x ) + b ] ); Utilizar la funcin obtenida para la nube de puntos cuyas coordenadas son las componentes de igual ndice de los vectores x e y generados por las siguientes instrucciones de Matlab:

x = [ 1 : 20 ] + 5 rand( 1, 20 ); y = [ 1 : 20 ] + 2 rand( 1, 20 );

5. Crear una funcin que calcule, a partir de dos seales senoidales de igual frecuencia, el cociente entre sus amplitudes y el desfase angular (en grados) entre ambas. La cabecera de esta funcin deber ser de la forma: function [ coc, desf ] = comparar ( an, s1, s2 ) donde an y s1 son los vectores cuyas componentes de igual ndice son, respectivamente, los valores de las abcisas (ngulos expresados en radianes) y las ordenadas (magnitudes) de una serie de puntos pertenecientes a la grfica representativa de la primera de las seales y an y s2 son los vectores anlogos a stos para la segunda de las seales; y coc y desf son, respectivamente, los valores del cociente entre la amplitud de la primera y la segunda seal y el desfase angular en grados de la segunda seal con respecto a la primera (un desfase positivo se interpretar como un adelanto y un desfase negativo como un atraso). Aplicar la funcin obtenida a las seales senoidales describibles por una serie de puntos cuyas coordenadas son, respectivamente, las componentes de igual ndice de los vectores an y s1 y las anlogas de los vectores an y s2, en el caso particular en el que dichos vectores hayan sido creados por las siguientes instrucciones de Matlab:

an = 0 : pi / 100 : 2 pi ; s1 = 3 sin( an + pi / 3 ) ; s2 = 5 sin( an + pi / 4 ) ;

6. La figura siguiente muestra un filtro activo. Este circuito tiene una ganancia baja para bajas frecuencias y una ganancia alta para altas frecuencias. Se trata por tanto de un filtro paso alto.
R C Vin

Vout

La magnitud de la ganancia de este circuito, en funcin de los valores asignados a los parmetros R y C y de la frecuencia f de la seal excitadora, viene dada, expresada en forma natural y en decibelios, por:

ganancia = 2 f R C ganancia dB = 20 log10 ( 2 f R C ) dB Se pide: Crear una funcin que solicite a su usuario que introduzca por teclado los valores de la resistencia y de la capacidad del condensador de este circuito y que, a partir de ellos genere y muestre una tabla de ganancias del mismo, expresadas tanto en forma natural como en dB, para todas las frecuencias comprendidas entre 0.1 Hz y 1 GHz, con una resolucin de una dcada ( 0.1 Hz, 1 Hz, 10 Hz, 100 Hz, ... ,1GHz ). En la solucin de este problema se deber tener en consideracin lo siguiente: a) b) Los valores admisibles para la resistencia sern los comprendidos entre 1k y 1M y para la capacidad del condensador, los menores de 1mF. La tabla pedida deber ser generada conforme al formato indicado ms abajo.

7. Obtener una versin modificada de la funcin creada en el ejercicio anterior en la que se incorpore como novedad que, dependiendo del valor asignado a un parmetro de entrada, genere y muestre una tabla de ganancias, o bien del filtro paso alto descrito anteriormente, o bien del filtro paso bajo que se muestra a continuacin. Si a dicho parmetro se le asigna el valor 0 se deber mostrar la tabla del filtro paso alto y si se le asigna el valor 1, se deber mostrar la tabla del filtro paso bajo. La figura siguiente muestra un nuevo filtro activo. Este circuito tiene una ganancia alta para bajas frecuencias y una ganancia baja para altas frecuencias. Se trata por tanto de un filtro paso bajo.
C

R Vin

V out

La magnitud de la ganancia de este circuito, en funcin de los valores asignados a los parmetros R y C y de la frecuencia f de la seal excitadora, viene dada, expresada en forma natural y en decibelios, por: 1 ganancia = 2 f RC ganancia dB = 20 log10 ( 2 f R C ) dB

Formato de salida para los ejercicios 6. y 7. (slo se indica la magnitud en dB):


Filtro paso bajo ( R = 2000, C = 0.0005 ) -----------------------------------------------------10e-1 10e0 10e1 10e2 10e3 10e4 10e5 10e6 10e7 10e8 10e9 4.0364 dB -15.9636 dB -35.9636 dB -55.9636 dB -75.9636 dB -95.9636 dB -115.964 dB -135.964 dB -155.964 dB -175.964 dB -195.964 dB Filtro paso alto ( R = 15000, C = 0.0002 ) -----------------------------------------------------10e-1 10e0 10e1 10e2 10e3 10e4 10e5 10e6 10e7 10e8 10e9 5.506 dB 25.506 dB 45.506 dB 65.506 dB 85.506 dB 105.506 dB 125.506 dB 145.506 dB 165.506 dB 185.506 dB 205.506 dB