Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matlab Introduction
Matlab Introduction
El entorno de Matlab
No hay persona que al entrar a Matlab por primera vez se haya sentido desilusionada. Todo lo que se ve es una lnea de entrada de comandos esperando. Matlab solo ejecuta rdenes. Es nuestro pequeo esclavo numrico. Estas rdenes pueden comunicarse de dos formas: Directamente en la lnea de comandos
Ud.: lstrame los zapatos Matlab: S Amo Ud.: ahora abancame Matlab: Si, Amo Mediante una receta preestablecida llamada script
Ud. le da a Matlab un papiro que dice: Esclavo Matlab, estas son las tareas que le encargo en el da de la fecha: a) Lstrame los zapatos b) Abancame De no cumplir con las tareas correctamente ser degollado al amanecer
Firmado, El Amo Es recomendable dar los primeros pasos dando rdenes directas ya que podemos ir apreciando la consecuencia de cada orden. A la hora de escribir un programa completo, la segunda forma es la ms adecuada, ya que en el proceso de depurar el programa no es necesario escribirlo de nuevo cada vez que queramos ejecutarlo.
Lnea de comando
La lnea de comando de Matlab permite tambin realizar algunas operaciones del ya casi extinto DOS anteponiendo el smbolo de admiracin (!) a la instruccin Por ejemplo
>>!ren fulano.m mengano.m
Matlab Path
Una de las primeras tareas a realizar cuando nos dispongamos a empezar a trabajar es crear un directorio o carpeta de trabajo para trabajar ms cmodamente. Luego de crearlo, lo ponemos como directorio local (current directory). Cada vez que se ejecute un comando, este ser el primer lugar donde lo busque y si no esta all, Matlab buscara en su listado de paths.
Las Libreras
Una librera es una serie de funciones (archivos *.m) que permiten encarar determinados problemas. Existen libreras de procesamiento de seales, de manejo simblico de datos (cosa que Matlab no
debera por qu hacer pues es un simulador numrico), y de todo tipo de manejos esotricos que no vienen al caso. Una de las ventajas de Matlab, es que su cdigo es abierto. Esto quiere decir que cualquier funcin de las libreras, estndar o no, puede ser editada y modificada. Es decir que una funcin cualquiera que ya venga incluida en el paquete no difiere demasiado de una funcin que nosotros podamos escribir (esto fue cambiando un poco ya que cada vez mas se usan .dll pero el grueso sigue siendo .m)
Matlab Editor/Debugger
Matlab cuenta con un editor de texto, que tambin efecta acciones de debugging, en donde pueden escribirse los scripts. El editor resalta en distintos colores las palabras reservadas, las cadenas de string, y no me acuerdo que otra cosa.
Help!
Este comando nos permite solicitar ayuda sobre cualquier comando o funcin que se encuentre instalada en Matlab. Escribiendo help en la lnea de comando, el programa devuelve un listado de todas las libreras instaladas. Entonces:
help
Para pedir mas detalles sobre las funciones que pertenecen a una librera dada, ingresamos help seguido del nombre de la librera. Por ejemplo:
help stats
La librera stats agrupa diferentes rutinas tiles en probabilidad y estadstica. Resulta muy instructivo echarle una mirada. Al final de la ayuda nos remite a algunos temas relacionados para que podamos continuar la bsqueda, si es que no terminamos de encontrar lo que buscbamos. Si quisiramos ver con mas detalle algn tem de la lista, basta con escribir help <tem>. Ejemplo:
help normpdf NORMPDF Normal probability density function (pdf). Y = NORMPDF(X,MU,SIGMA) returns the pdf of the normal distribution with mean MU and standard deviation SIGMA, evaluated at the values in X. The size of Y is the common size of the input arguments. A scalar input functions as a constant matrix of the same size as the other inputs. Default values for MU and SIGMA are 0 and 1 respectively.
Hay otro modo de ayuda, un poco mas cmodo, que se puede acceder desde el men desplegable Help. El contenido es el mismo que el de la lnea de comandos, solo que disponemos de un pequeo navegador. Matlab cuenta tambin (en sus versiones ms recientes) con una enorme cantidad de archivos de ayuda en formato PDF o HTML. Son muy instructivos pero algo largos.
y a continuacin sobrescribirlo,
a = [1 2 3] a = 1 2 3
Para crear manualmente vectores y matrices se encierra los elementos entre corchetes, y se usan comas o espacios para separar elementos que estn en la misma fila, y punto y coma para separar las diferentes filas. Vector fila
a = [1 2 3] a = 1 2 3
Vector columna
a = a =
[1 ; 2 ; 3] 1 2 3
Matriz
a =
a = [1 1 4 7
2 2 5 8
3 ; 4 3 6 9
6; 7 8 9]
Nota: zeros(), ones() - Estas funciones permiten crear matrices rellenas de ceros o de unos. Para conocer ms sobre la sintaxis:
>> help zeros
b = [9 b = 9 6 3
Para la resta:
d = a-b d = -8 -2 4 -6 0 6 -4 2 8
Producto matricial El operador producto es el asterisco ( *). Nuevamente los operandos deben ser de dimensiones compatibles. Ejemplo Con las matrices del ejemplo anterior
e = a*b' e = 46 118 190 28 73 118 10 28 46
Transponer una matriz o un vector El operador de transposicin es la comilla simple ( ). Transponer significa intercambiar filas por columnas. Una aplicacin sera efectuar un producto interno. Siendo a y b vectores columna, se define el producto interno como: <a,b>=aT*b Donde T denota transposicin. El resultado de <a,b> es un escalar. Ejemplo:
a = [1 ; 2 ; 3]; b = [3 ; 2 ; 1]; c = a'*b c = 10
Nota: Un punto y coma al final de una sentencia hace que no se vea el resultado de la operacin. Esto es muy importante, porque Matlab tiene la molesta costumbre de ir mostrando todos los resultados obtenidos. El punto y coma nos permite filtrar los resultados parciales y en todo caso solo mostrar aquellos que sean de nuestro inters.
Operaciones elemento a elemento Matlab define algunas operaciones que sern realizadas elemento a elemento. Ya vimos anteriormente que la operacin A*B realizaba el producto matricial. Pero que pasa si queremos que cada elemento de A quede multiplicado por cada elemento de B (suponiendo que tienen las mismas dimensiones)? Existe otro operador para tales fines: Definimos las matrices a y b:
a = [1 a = 1 4 7 8 8 5 2 2 2 5 8 3 ; 4 3 6 9 7 ; 6 7 4 1 5 4; 3 2 1] 5 6; 7 8 9]
b = [9 b = 9 6 3 c =a.*b c = 9 24 21
16 25 16
21 24 9
Como se ve, si anteponemos un punto al operador, la operacin se realiza elemento a elemento. La divisin ( /) y la potencia (^) tambin permiten esta utilizacin.
c=a./b c = 0.1111 0.6667 2.3333 0.2500 1.0000 4.0000 0.4286 1.5000 9.0000
Otras operaciones pueden ser consultadas en la librera ops: Concatenacin de vectores y matrices Supongamos que queremos formar una matriz con diferentes vectores y/o matrices de dimensiones compatibles, o queremos unir dos vectores para formar uno mas largo. Esto puede realizarse rpidamente de la siguiente manera: Comencemos generando dos vectores fila a y b:
a = [1 2 3]; b = [4 5 6];
Podemos concatenarlos de varias maneras... Si los unimos uno a continuacin del otro:
c = [a b] c = 1 2 3 4 5 6
Notar que al separar a y b por un espacio estamos diciendo que ambos pertenecen a la misma fila, por lo que es entendible el resultado obtenido. Si por el contrario, interponemos un punto y coma entre ambos:
c = [a ; b] c = 1 4 2 5 3 6
Para generar un vector cuyos elementos sean nmeros crecientes o decrecientes en un intervalo regular existe el operador : (dos puntos). El uso ms sencillo de este operador sera: <Mnimo>:<Mximo> Ejemplo:
a = 1:4 a = 1 2 3 4
Y si queremos que el rango sea decreciente slo escribimos el intervalo negativo. Ejemplo
a = 4:-0.5:1 a = 4.0000 3.5000 3.0000 2.5000 2.0000 1.5000 1.0000
Indexacin Matlab permite acceder a un elemento o un conjunto de elementos de una matriz o un vector de una manera muy eficiente. Definamos la matriz a:
a=[1 2 3;4 5 6; 7 8 9];
Si queremos acceder al elemento a(1,2) (fila1 y columna 2 de a) y guardarlo en una variable nueva llamada a12:
a12=a(1,2) a12 =
Nota: Matlab no admite el cero como ndice de vectores ni matrices !!!! Pero que pasa si pretendo recuperar toda una fila o una columna, o hasta una submatriz contenida en a?. Veamos, para recuperar un conjunto de elementos debemos asignar rangos a las filas y columnas. Si busco la fila 1:
f1=a(1,1:3) f1 = 1 2 3
Esto se lee as: Quiero todos los elementos que se encuentren en la fila 1 y en las columnas de 1 a 3 inclusive . Existe una manera mas compacta de escribir la misma sentencia. Se puede usar una suerte de comodn (:) que indica que quiero todas las filas o todas las columnas.
f1=a(1,:) f1 = 1 2 3
Esto se leera como: Quiero los elementos de la fila 1 sin importar en que columna estn De igual manera, para recuperar una columna cualquiera, la 2 por ejemplo:
c2=a(:,2) c2 = 2 5 8
Donde c2 es ahora un vector columna. Para indexar un vector, no importa si es fila o columna:
f1_1=f1(1) f1_1 = 1
Donde el primer elemento de f 1 queda guardado en la variable f 1_1 Por ltimo se puede acceder a una submatriz de a:
sa=a(1:2,2:3) sa = 2 5 3 6
Donde rescatamos las primeras dos filas y las dos ultimas columnas.
figure(1); % Abro una ventana grfica con el nmero (1) plot(v,'b'); % Dibujo el vector v en azul hold on % retengo el dibujo para que no se sobreescriba plot(u,'r'); % Dibujo el vector u en rojo title('Seal original (azul) - seal filtrada (rojo)');
Como se puede apreciar, la curva roja se saltea algunos picos de la original, por lo que parece anuvo noms...
Fine