Curso práctico de matlab: Análisis numérico y análisis de señales

Página 1

INTRODUCCIÓN.
Historia, características del programa, instalación y llamada. Origen del nombre: “ MATrix LABoratory ”

FUNDAMENTOS.
El único tipo de objeto o elemento con el que trabaja MATLAB es una MATRIZ de números complejos en general.

Sentencias y variables.
Con MATLAB: - no hace falta asignar valores a variables para obtener resultados, - no hace falta declarar variables ni darles dimensiones. Así son válidas las siguientes sentencias: var = expresión o expresión La variable que, por defecto, recibe todos los resultados de las

expresiones no asignadas es ans.

Introducción de matrices simples.
Las matrices se pueden describir o entregar al programa de cuatro formas: 1. De forma explícita. 2. Cargando un fichero ASCII ( un script “*.m” )que contenga la descripción de una matriz. 3. Generandolas de forma implícita con funciones MATLAB. 4. Con el comando load con el que se haya salvado en un fichero “*.mat” en una sesión anterior.

Comandos: [ ; delimita la matriz. separador de filas, evita ecos de variables en pantalla, separador de

sentencias en una misma línea para no producir ecos.

indican al programa que la sentencia sigue en la otra línea. lo que venga detrás de este se ignora. A(1:3./. *. separador de columnas de una matriz. Las variables deben empezar por letra y sólo se reconocen sus primeros 19 caracteres que pueden ser números.:) todos los elementos de la 2ª fila. % = separador de comentarios. también. A # a.34e21. -. y “+” y “-” separan). Comando: : hace referencia a todos los elementos de una fila o una columna. A las funciones se las llama siempre en minúscula a menos que se le indique lo contrario con casesen.= pero no para los Introducción de valores y expresiones. entre +. Aunque no los veamos en pantalla.. Es sensible a mayusculas y minúsculas para las variables. Las matrices se amplían automáticamente cuando se da valor a elementos de posiciones no existentes. Trabaja siempre con 16 dígitos significativos.” es el separador decimal.\. Los operadores aritméticos son :+. El punto “. . etc. a menos que se le indique lo contrario con casesen. Se pueden concatenar matrices para dar generar matrices mayores. Referencias a elementos de matrices. *. Espacios en blanco son ignorados números complejos. letras o el caracter “_”.. -. Tres o más puntos seguidos . Ejemplos: A(1.. A(2. El rango de valores admitidos está entre ±10308 y ±10-308./. separador de sentencias en una misma línea produciendo ecos. Sintaxis del lenguaje MATLAB. Ejemplos: 1. Sirve. para generar vectores automáticamente.. operador asignación..y ^.-32e-10.3) elemento de la 1ª fila y 2ª columna.:) todos los elementos de las filas 1ª hasta la 3ª. Para verlos utilicese el comamando format. Y las reglas de precedencia son las usuales (“*” y “/” unen.

»[ 1+3*i 2+4*i] # [1 +3*i 2 +4*].141592 También posee implementada la función infinito. Cuando demos valores complejos a los elementos de una matriz . Not A Number.raiz cuadrada. % sqrt() . r = c + d*j. j=4. Números complejos. la parte real e imaginaria del número complejo serían considerados como elementos Comandos de presentación de resultados e información. Cuando en el trascurso de sus operaciónes se encuentra con resultados infinitos el programa no se detiene sino que sigue ejecutando operaciones mientras pueda. Matlab trabaja siempre en el cuerpo de los números complejos. Ejemplo: a=1/0 Warning: Divide by zero a = Inf Posee así mismo la variable nan. siendo esta otra de las características que le hace mas potente.Matlab posee constantes definidas como pi. Ejemplo: »pi »ans= 3. que se produce al ejecutar opreaciones del tipo 0/0. » z= a + b*ii. Si utilizasemos las dos.. la i compleja dejará de ser utilizada por el programa hasta que la borremos de la memoria. Si en nuestros cálculos utilizamos una variable a la que llamamos i. como por ejemplo: » i=3. » w=r*exp(i*phi)..i. Los números complejos se introducen de la siguiente forma: » z= a + b*i. hay qiue llevar cuidado con no dejar espacios entre el “+” ó el “-” pues distintos de la matriz. inf. Igual pasa con la j. siendo las variables i y j las que multiplican a la parte imaginaria del nímero. . inf/inf. tendíamos que definirnos otra unidad imaginaria pura de la forma: » jj=sqrt(-1)..

Obtención de ayuda. Who nos dá un resumen y whos nos dá mayor cantidad de información. » help : . así como su tamaño se obtienen en matlab con los comandos who y whos. en notación cientifica. con 16. para recordar la sintaxis de funciones y así no tener que aprendersela de memoria. la sqrt. % borra de la memoria las variables s. . % igual al anterior y notación exponencial. % igual. El estado de la memoria y las variables que matlab ha cargado en ella. d y f. Conocer el estado de la meroria RAM. etc. Un comando muy útil es el comando help. whos y clear. sobre todo. Si queremos borrar sólo algunas. cuando estemos realizando cálculos en los que necesitemos conservar el valor de muchas variables. pero con notación exponencial »format long. ver sólo el signo. f . sobre todo. Who. lo hariamos así: » clear s. »Format hex. está el comando format con las siguientes combinaciones: »format short. % 15 cifras decimales »format long e. pues sirve para obtener información en linea sobre cualquier función y comando de matlab. % saca una lista de directorios donde hay funciones matlab » help directorio . % cuatro cifras decimales »format short e .. % formato hexadecimal »format +. que en matlab se hace con el comando clear. El conocer la cantidad de memoria que tenemos ocupada puede ser importante. formato don de sólo aparece el signo del resultado. en hexadecimal.Presentación de resultados. % nos dá información sobre esta función. Ejemplos: » help . El comando clear sim argumentos borra todas las variables cargadas en memoria. En estos casos es útil liberar memoria borrando variables de ella. d. % nos dá información sobre la utilización de los dos puntos. Para ver los resultados que obtenemos con 4 cifras decimales. Es muy útil. % da una lista de de las funciones que hay en ese % directorio » help sqrt .

F=c*p/100. Podemos en cierta forma. Si queremos guardar la sesión con otro nombre se lo indicaremos a continuación del comando de la forma: » save dia2 % guarda la sesión el el fichero dia2. . Con este comando y sin argumentos guardamos nuestra sesión en el fichero matlab. » load dia2 % carga la sesión Y si sólo queremos guardas unas pocas variables lo haremos así: » save dia3 x y z . Cuando queramos reanudar nuestra sesión de cálculo teclearemos el comando load y matlab cargará automáticamente el fichero matlab. Ejemplo de función: fichero percent. Funciones y script.mat. personalizar nuestros trabajos a nuestro gusto.Salvar y cargar sesiones de trabajo. % las carga. Estos ficheros permiten realizar programas recoguiendo entradas desde el teclado y presentando resultados. % guarda solo las variables x y z » load dia3. % esta función te calcula el tanto por ciento p % de la cantidad c. El otro tipo de ficheros que puede interpretar matlab son los script o ficheros de comandos preescritos.p).. Ejemplo. Si una vez que hemos teminado nuestros cálculos queremos conservarlos para continuar con ellos en otro momento lo podemos hacer con el comando save. Importante: ficheros tanto las funciones como los y se scripts llaman debem desde guardarse matlab como la asccii con estensión *.m function f=percent(c. El poder definirse uno sus propias funciones para después utilizarlas cuando quiera es otra de las razones que dan a matlab un gran atractivo y una gran potencia. save.m.34) »a= » 34 De esto hablaremos en otros capítulos.mat. load. que es un fichero en formato binario en donde se guardan el nombre de nuestras variables con sus valores resprectivos. % esta debe ser la primera línea del fichero. sin extensión (ni el punto). con el caso anterior: »a=percent(100.mat.

La multiplicación de un número (escalar) por una matriz es el producto de este número por todos los elementos de la matriz.(+) (-). Si A es de dimensión m x n. »C=A+B. Ejemplos: »A =[ 1 4 7 » B=A' B = 1 2 3 4 5 6 7 8 9 5 8 2 6 9] 3 »a=[10 20 30 40] »b=a' »b= 10 20 30 40 Importante: La matriz taspuesta de una matriz de complejos es la conjugada de la matriz que resulta de cambiar las filas de la original por columnas y las columnas de la original por filas. Trasposición ( ' ). Para poder sumar y restar matrices éstas tienen que tener el mismo número de elementos. El oprerador de la trasposición para matlab es el apóstrofe '. B tiene que ser de dimensión n x h. Vamos a ver algunas de las operaciones que podemos realizar con ellas. % no es correcto. el número de columnas de la primera ha de ser igual al número de filas de la segunda. para poder multiplicarla por B. Multiplicación de matrices. % es correcto »D=A-[2 3]. Suma y resta de matrices. esto es.OPERACIONES CON MATRICES Se ha mencionado ya que las matrices son los operandos básicos de matlab. . La trasposición de una matriz da omo resultado otra matriz que tiene por filas las columnas de la original y por columnas las filas de la original. (*) Para poder multiplicar matrices estas han de tener el la misma dimensión interna de la multiplicación. Ejemplos: si A y B son las matrices de antes.

5664 21.9911 6. Evidentemente. Ejemplo: Si tenemos el sistema de ecuaciones [A]*[x]=B y quisieramos despejar el vector [x] solución del sistema. multiplicación por la inversa y por la izquierda. multiplicación por la inversa y por la derecha.8496 28. .es igual al número de incognitas. [inv(A)]*[A]*[x]=[inv(A)]*[B] teniendo en cuenta que [inv(A)]*[A]=eye(size(A))=I.( / ). Existen dos operadores para la división de matrices que son: ØB/A indica que multiplicamos B por su derecha por la inversa de A. nos queda [x]=[inv(A)]*[B] Sin embargo. ( \ ). indica. por tanto. para estos productos se deben cumplir las reglas mencionadas en el apartado anterior. ans= 3. La división de una matriz por otra se debe entender como multiplicar una matriz por la inversa de otra. con matlab. y resolveríamos así el sistema anterior: [x]=[A]\[B] El motivo es que sólo existe inversa de una matriz si esta es cuadrada y regular. es mucho más eficaz.2743 División de matrices.1416 12. esto es B*inv(A). resolver los sistemas de ecuaciones con la división izquierda o derecha. inv(A)*B. ØA\B indica que multiplicamos B por la inversa de A y por la iquierda. /. esto es. por tanto. Así tenemos. Ejemplo: »pi*A % A es la matriz de antes.7080 25. por tanto. procederíamos de la siguiente forma: Multiplicamos ambos lados de la igualdad y por el mismo lado.4248 18. indica. el izquierdo. por inv(A). \. utilizando la función inv() sólo podríamos resolver sistemas de ecuaciones perfectamente determinados en los que el número de condiciones -ecuaciones. y hay que tener en cuenta el orden de los operandos en la multiplicación.De lo anterior se deduce que el producto de matrices no es comutativo.2832 15. para que la igualdad no cambie.1327 9.

en general. nos permite solucionar sistemas de ecuaciones de este tipo. un número mayor de condiciones de ecuaciones . ( ^ ) Dadas las particularidades del producto de matrices la expresión en matlab : [A]^p sólo es válida si: 1º [A] es una matriz cuadrada.desviaciones . Si p no es entero la potencia de la matriz se calcula diagonalizando la matriz y elevando los elementos de la matriz diagonal a p. en la práctica. es una matriz de la misma dimensión que P. Vbase^p/Vbase^p=eye(size(A))=I Un número elevado a una matriz está definido si la matriz es cuadrada. Pues bien. Si p es un entero.sea mínima ". en matlab. según el cual el sistema se resuelve de forma que " La suma de los cuadrados de los residuos . la potencia de matrices se calculará multiplicandola por sí misma tantas veces cumo indique p.Sin embargo. La solución que nos dá matlab sigue el criterio de los mínimos cuadrados. Potencias con matrices.Diagonal]=eig(A) A^p= Vbase * Diagonal^P * /Vbase pues al volver a multiplicar el efecto de Vbase y /Vbase se compensa. [Vbase. Ejemplo: »p =[ 4 0 » 2^p ans = 16 0 0 8 0 3] . Si a es un número y P una matriz cuadrada. y 2º p es un númreo.que de incógnitas. y esto con el fin de conseguir que nuestras soluciones se ajusten más a la realidad. nos vamos a encontrar con que tendremos. en nuestros experimentos y medidas. Nota: Esto último nos permitirá la aproximación de curvas que veremos en el capítulo de polinomios. el resultado de elevar a a P. un escalar. Esto es. la división de matrices tal y como la hemos visto aquí. a^P.

al igual que ocurria con el producto y la división. Igual que con el producto de arrays sucede con la división.*". un vector o un número pero tratado elemento a elemento y no como un solo operando. Multiplicación y División de arrays. Al multiplicar arrays estamos multiplicando elemento a elemento y. » sol=c.* . deben tener el mismo número de elementos para que la operación sea correcta.". Resta. Por tanto. Suma. arrays. Existe.( . "./"./c sol = 1 1 1 1 1 16 36 64 100 Potencias de arrays. ( + . esto es.". Así pues. Visto esto hay que decirle a matlab que lo que vamos a multiplicar son arrays de números y no matrices. . delante del signo por. pues se van a multiplicar los elementos que ocupan la misma posición dentro del array. Se elevan los elementos de un array a los del otro que se encuentren en la misma posición. .. se hace necesario introducir nuevos operadores para trabajar con arrays. Ejemplos: » c=[ 2 4 6 8 10]. para decirle a matlab que trate el operando como un array y no como una matriz. No obstante. no necesitamos ningun operador especial para realizar estas operaciones pues ya los tenemos. Esto se lo decimos colocando un punto decimal. por tanto./ ) Sumar y restar arrays es como sumar y restar matrices y ambos operandos. Ejemplos: . existe el producto de un escalar por un array que es igual que el de un escalar por una matriz.^ ) Aquí tambien se opera elemento a elemento."*" así el operador es ". la posibilidad de elevar un array a un escalar. esta se efectúa elemento a elemento y también se le indica al programa con un punto decimal delante del signo de dividir. el " + " y el " .OPERACIONES CON ARRAYS Para matlab un array en una matriz.*c sol = 4 » sol=c. ". a saber. ambos operandos también han de tener el mismo número de elementos. esto es. .

0000 Nota: Es conveniente dejar espacios entre el operador de los arrays .0e+010 * 0.0000 0. » sol=c.realiza una comparación elemento a elemento entre A y B y devuelve una matriz del miso tamaño con "1" donde la condición ℜ sea verdadera y "0" donde sea falsa.0017 1. . >.el punto más el simbolo . En este ejemplo pedimos que nos de los elementos de P que son multiplos de cero.» c=[ 2 4 6 8 10]. »3+4 >= 5 ans= 1 % lo anterior es verdadero.0000 0.donde ℜ representa uno de los operadores anteriores. A ℜ B . ==. <=.y estos mismos para evitar confusiones con el punto decimal.3)==0) Operaciones lógicas. » sol=(rem(P. Operadores relacionales. Sirven estos para comprobar condiciones (en sentencias if) y para comparar operandos. >=. A y B deben tener las mismas dimesiones a menos que una de ellas sea un escalar.^c sol1 = 1. Ejemplo: »3+4 == 5 ans= 0 P=[ 3 1 4 sol = 1 0 0 1 0 1 1 0 0 %lo anterior es falso 33 2 6 36 4 7 ]. (La versión 3. Una altenativa a los espacios son los paréntesis. % Otro ejemplo.5 de matlab da prioridad al punto decimal frente al operador del array). La función rem nos dá el resto de una división entera.0000 0. Un escalar puede ser comparado con cualquier otro operando. Son los seis siguientes: <.^2 sol = 4 16 36 64 100 » sol1=c. y ~=.

Dado que any y all analizan columnas para averiguar si una matriz tiene algún elemento distinto de cero haríamos: any(any(A)) % que daría como resultado "1 o "0". o complemento lógico. | or. esto es. Funciones Trigonometricas. y ~ not . falso en el resto. dando como resultado una fila de unos y/o ceros. Estas son las operaciones lógicas pero también existen las funciones lógicas siguientes: exist comprueba si las variables o las funciones existen. por una función compilada. ("1"). El argumento de las funciones trigonométricas ha de ser pasado en radianes. Verdadero si es texto. o producto lógico. según fuera verdadero o falso. find isnan isinf finite isempty isstr isglobal devuelve los indices de los elementos de una matriz que son distintos de cero. conocidas en electrónica digital. Los operadores son: & and. El análisis de la matriz lo realiza por columnas. si Verdadero en los Not-A-Number. Verdadero. Verdadero si es una variable global. E igualmente: all(all(A)) % daría como resultado "1" si todos los elementos de la matriz fuesn distintos de cero y "0" en caso contrario. si algún elemento de la matriz es verdadero. verdaderos. o suma lógica. es distinto de cero. Esta función devuelve distintos valores según se pregunte por una variable. El análisis lo realiza por columnas dando como resultado una fila de unos o/y ceros. Para los ejemplos x es una matriz de ángulos en radianes. & y | comparan escalares o matrices de las mismas dimensiones. . any Devuelve si ("1").Estas son las operciones usuales del álgebra de Boole. Si las matrices son de unos y ceros la matriz resultado es de unos y ceros y la operación es equivalente a la de la lógica binaria. True for finite elements. esto es . Ver help exist. por una función creada o por un script. all Verdadero si todos los elementos de un vector son distintos de cero. elementos de la matriz que sean infinitos. Verdadero si la matriz está vacía.

Arco Secante.x=cos(a) Arco Coseno Hiperbólico. Cosecante Hiperbólica Arco Cosecante. a=cos(x) Coseno Hiperbólico.sin sinh asin asinh cos cosh acos acosh tan tanh atan atanh sec sech asec asech csc csch. x=asin(a) Coseno. h tan(θ ) = 1 sen(θ ) j⋅θ y x sec(θ ) = . a=tan(x) Tangente Hiperbolica. x=atan(x) Secante. x=atan(a) Arco tangente hiperbólica. Cosecante. Arco Cotangente Hiperbólica. Cotangente Hiperbólica. Arco Cotangente. a=tanh(x) Arco tangente. sin(θ ) = e −e 2• j − j •θ + cosh(θ ) = e e 2 θ −θ . a=cosh(x) Coseno Hiperbólico. Arco Secante Hyperbolica. cosec(θ ) = cos(θ ) = e +e 2 − j •θ . x=asin(a) Arco Seno Hiperbólico. cos(θ ) = x . Arco Secante Hiperbólica. a=sin(x) Seno Hiperbolico a=sinh(x) Arco Seno. − sinh(θ ) = e e 2• j θ −θ . a=sec(x) Secante Hiperbólica. x=acos(a) Tangente. Cotangente. acsc acsch cot coth acot acoth Seno. h 1 cos(θ ) j⋅θ sin(θ ) = y .

real(a+b·i)=a Funciones Numericas. % función signo. conj(a+b·i)=a-b·i Parte imaginaria.log(x)=Ln(x) Logaritmo Decimal.sqrt(x)=√x Funciones Complejas. fix floor ceil round rem sign Ejemplos: » z=[1 -1 3 0 45 -2 0]. ∠(x)=atan(b/a) Complejo conjugado. imag(a+b·i)=b Parte Real. Redondea hacia más infinito (+∞) Redondea hacia el entero más próximo. Función signo. Sea el complejo c=a+b·i abs angle conj imag real Valor Absoluto: abs(x) = |x|= √a2 +b2 Fase.(trunca el número) Redondea hacia menos infinito (-∞).exp(x)= ex Logaritmo Natural. » sign(z) ans = 1 » fix(h) ans = -4 » ceil(h) ans = -4 -1 1 0 1 -1 0 » floor(h) ans = -5 » round(h) ans = -5 » h= -4.667788.Funciones Exponenciales. . log10(a)=log(a)/log(10) Raiz Cuadrada. Redondea hacia cero. exp log log10 sqrt Exponencial. Resto después de una división.

4435 0. nº de puntos a generar) Ejemplo: » % para obtener 5 puntos equidistantes entre -pi y pi » t=linspace(-pi.se ha de poder llegar al valor final.9069 1.5) t = -3. » y=x . Los dos puntos.positivo o negativo .3000 -6.'. partiendo del valor de inicio con el incremento . Otra forma de generar vectores es mediante la función linspace(). » [x y] ans = 0 0.5000 -8.0944 2.3963 1.Utilizando los dos puntos de la forma: x=valor_inicial:incremento:valor_final Si no se indica el incremento este toma el valor 1.0472 1. Ejemplos: » a=-7:1 % orden ascendente.5706 % seguiría hasta pi 2º.8138 1. » x=x. -3.1194 0.1416 -1. c = [] % c es una matriz vacía.1416 .* sin(x). pero la sentencia ha de ser congruente.4488 0. El incremento puede ser negativo.' .1000 -4.2000 -5.6981 1.5708 0 1.3491 %sigue al lado 0 0. Sintaxis: linspace(Valor inicial. es un caracter muy importante en matlab.3751 1.4000 -7. Vlor final.pi. Se pueden generar vectores de las siguientes formas en matlab: 1º.5708 3.6000 -5 -4 -3 -2 -1 0 1 » b=-2:-1.1:0. a = -7 -6 % orden descendente. esto es.y=y.MANIPULACIÓN DE VECTORES Y MATRICES La posibilidad que dá matlab para poder referirse a elementos y conjuntos de elementos dentro de una misma matriz permite realizar complejas manipulaciones de datos.7188 1.1:-9 b = -2.7453 2. por medio de la cual se generan vectores de elementos equiespaciados. el vector no se ha generado Esta utilidad permite la generación de tablas automáticas como por ejemplo: » x=0:pi/9:pi. :.0000 » c=-2:-1. Generar vectores.

5) B(3. Para referirnos a un elemento de una matriz hay que indicar la fila y la columna donde se encuentra. Por último que una nueva forma de con generar vectoes es con en la función logspace() produce vectores elementos separados incrementos logaritmicos.5) B(4.B(2.6) ans = 1 10 100 1000 10000 100000 Referencias a elementos . A(:. N) genera N puntos.B(2. en el lugar de las columnas.5)] Por supuesto. :.3).:).B(3.3. Para seleccionar un conjunto de filas o de columnas se utiliza un vector de enteros generado o explícito. se pueden asignar y borrar valores de elementos concretos de una matriz. Ejemplos: A=[1 2 3 4 5 6 7 8 9].B(4. La sentencia A(:) se refiere a todos los elementos de A vistos como vector columna.B(3.4 y 5 de la matriz A B(2:4.3).3º.3)=A(1. d2) genera un vector fila de 50 puntos logaritmicamente equiespaciados entre las decadas 10^d1 y 10^d2.3:5) % sub matriz de los elementos [B(2. » A(3.4).4). A(3.4).columna_j). A(fila_i.1)+A(1.2.:) % filas 1.3)=3 Para hacer referencia a todos los elementos de una fila de la matriz A se utilizan los dos puntos. Así si »A=[ 1 2 3 4 5 6] B= 1 3 . d2.B(4. Ejemplos: B(1:5. Si d2 es pi.2).5. logspace(d1. Sintaxis: logspace(d1. A(3.3). Igualmente para seleccionar una columna se ponen los ":" en el lugar de las filas.3) ans = 9 % se pueden asignar valores a % un elemento de una matriz. los puntos se encuentran entre 10^d1 y pi. subcriptores. Ejemplo: » logspace(0.

m las siguientes matrices útiles en distintas aplicaciones del cálculo matricial: compan matriz Companion. Esta sentencia es útil en funciones donde sepamos que vamos a necesitar matrices para guardar resultados pero. Matrices y elementos vacíos. 5 2 4 6 Vemos que esta sentencia coge las columnas de A y las pone una debajo de otra. . Por ejemplo: M=[1 0 1] V=A(M. a variables dijimos que no no han sido falta inicializadas forma. Matrices especiales.% la sentencia B=A(:) % produce % el resultado de al lado. % hace referencia a las filas 1ª y 3ª de la matriz A de % antes. Sin embargo. esto quiere decir que su utilización posterior no dará error. a priori. si no se inicializa antes de su utilización en operaciones propagará matrices vacías. %producirá A= 21 22 23 24 25 26 Si M es un vector de ceros y unos de la misma dimensión que el número de filas o de columnas de una matriz se podrá utilizar para hacer referencia a las filas o las columnas de la matriz. La operación inversa la podemos realizar si A es una matriz definida en dimensiones. En matlab no se de puede alguna hacer referencia aunque. no sabemos la dimensión que van a tener. Matlab tiene implementedas en funciones *. La sentencia »A=[ ] Declara la variable A como vacía. como hacía declararlas para asignarles valores.[ 2 3])=[ ] % borra las columnas 2ª y 3ª de C. Ejemplo: C(:. También se pueden eliminar filas y columnas enteras dentro de una matris asignandoles el vector vacío.:). Así para la matriz anterior A de 3x2 A(:)=21:26.

n) eye(m. vector espaciado uniformemente. »rand(‘normal’). matriz de números distribuidos uniformemente (0.gallery hadamard hankel hilb invhilb kron magic pascal rosser toeplitz vander wilkinson Varias pequeñas matrices test. Matrices útiles para nosotros son: zeros(m.n) linspace(m.C. Con matlab se pueden formar matrices con la concatenación de otras. y si el número de culumnas de B+C es igual al número de % % % % columnas de D+E. producto de tensores de Kronecker. matriz identidad.n) meshgrid matriz de ceros matriz de unos. Esto es.% genera una maytriz cuadrada. genera una matriz de unos del mismo tamaño que A »zeros(n). Problema clásico de test de autovalores simétricos matriz de Toeplitz. matriz cuadrada Magica. % genera una matriz cuadrada de números »%distribuidos según una función gaussiana. %Ejecutar help rand para más información sobre rand.rand(n). matrices.n) ones(m. Ejemplos: % Sean B. D E]. . matriz de Vandermonde. de ceros. D y E. arrays X e Y para g´raficos 3-D Ejemplos: »ones(size(A)). vector espaciado logaritmicamente.m. matriz de Hadamard.E. % es creada si B y C . Para ver como se generan estas matrices ejecutar el help de matlab o abrir los ficheros *. matriz de Hankel.n) rand(m. Construcción de matrices a partir de otras. tienen el mismo número de % filas. matriz inversa de Hilbert. si la concatenación es congruente.n) logspace(m.D. matriz de tst de autovalores de Wilkinson. matriz de Hilbert.1). nxn. matriz de Pascal. La matriz A A=[ B C.

.N) devuelve una matriz de error si X no tiene M*N elementos. Polinomio característico de A Singular value decomposition. Pseudoinversa de A. reshape(X.V]=eig(A) poly(A) [V. Extrae la matriz triangular inferior. Extrae la matriz triangular superior. Decomposición ortogonal-triangular.Este número es la relación entre el mayor valor singular de X y el menor. M-por-N cuyos elementos son tomados de X como si tuviera todas las columnas una debajo de otra.D. cond(X) Número que indica la condiciónde la matriz X. Determinante de X.r]=qr(X) X=pinv(A) [D. X’*A*X=X. Factores de la eleiminaciós de Gauss. Solución a sistemas de ecuaciones lineales. Da la vuelta a una matriz de abajo a arriba Cambia el tamaño de una matriz. Matriz inversa. Da la vuelta a una matriz de izquierda a derecha. .Funciones para la manipulación de matrices.M. Nº de filas o columnas linealmente independientes. Ocurrirá un Funciones de matrices. norm(X) rank(X) det(X) trace(X) \ and / lu inv(X) [q. Rota una matriz 90 grados. Rango de una matriz. A’*X*A=A. X=q*r.U]=svd(A) Norma de una matriz o un vector. Autovalores y auto vectores de A.X tiene que ser cuadrada. Traza de X: Suma de los elementos de su diagonal. diag fliplr flipud reshape rot90 tril triu Crea o extrae diagonales de matrices.

con toda seguridad. a entregar con nuestra medida no sólo el valor que creemos más probable sino también un intervalo entorno a ese valor (el . comparar una magnitud con otra patrón tomada como unidad.para nosotros. da el vector de los productos de un elemento por todos sun predecesores. Introducción. da el vector de las sumas de un elemento por todos sun predecesores. Podremos aproximarnos mucho a él pero nunca sabremos si nuestra medida se correspunde fielmente con el valor de la magnitud en cuestión. cumprod(X) Producto acumulado de elementos. Ordena las columnas de la matriz en orden ascendente Suma los elementos de la matriz por columnas. exacto. El error de una medida es . perturbaraán la medida. Sin embargo. Nos veremos obligados. Vemos que de lo anteriormente comentado esta es una cantidad que tampoco podremos conocer.ANÁLISIS DE DATOS: ESTADÍSTICAS. Medir es. Para elemento matriz haríamos max(max(X)). por tanto. Teoría de errores de medida. Las matrices son una manera cómoda de almacenar los datos resultado de experimentos o de muestras. aproximado. Igual al anterior pero nos dá el mínimo valor. Suma acumulada de elementos. conocer el valor real de una magnitud física es on ubjetivo imposible de alcanzar.mean(X)=sum(xi)/m. %m número de filas. De todo esto es lógico que en las ciencias experimentales sólo podamos dar los valores más probables de una magnitud y no los exactos. Nos dá el valor medio de los elementos de una matriz por columnas. Nos dá la mediana de una matriz columna a columna. la diferencia entre el valor real. Desviación Standard (por columnas).según su definición clásica. Producto de elementos (por columnas). Matlab manipula datos por columnas. y el medido.Otra de las causas por las que nuestra medida no va a ser exacta es porque nuestros instrumentos de medida . Las funciones de manipulación de datos de matlab lo hacen columna a columna y las más utilizadas son: max(X) nos dá el elemento mayor de una columna o una fila con los elementos obtener min(X) mean(X) median(X) std(X) sort(X) sum(X) prod(X) cumsum(X) el mayores mayor de cada culumna de toda de la la matriz.

x2. etc. por tanto. a saber. Una leve definición de los mismos es la que sigue: Errores sistemáticos son aquellos que se producen siempre en el mismo sentido. los accidentales o fortuitos y los de apreciación personal. llamemosles {x1. La repetición de una medida sometida aeste tipo de errores dará como resultado un conjunto de ellas situadas a uno y otro lado del valor más probable de la magnitud. el hecho de que siempre se den en el mismo sentido) y se suelen evitar empleando lo que se llaman técnicas diferenciales. etc. x.. midiendo muchas veces ese algo podré concluir que sea muy probable que su valor se encuentre dentro de los límites máximo y mínimo de los valores que he obtenido. el valor medio de ellas es: 1 El valor más probable se debe entender de la siguiente forma: si me preguntan por el valor de una magnitud dando como respuesta el valor más probable tendré una probabilidad mayor de equivocarme menos. Tipos de errores Antes de continuar con los conceptos estadísticos sobre el cáculo de errores diremos que son universalmente aceptados tres tipos de errores. una mala calibración. en forma de campana. Estos errores no son generalmente un problema debido a su naturaleza estática ( esto es. a fenómenos externos. esto es de cometer menor error en mi respuesta . los errores sistemáticos. pueden ser positivos y negativos. saltan a la vista ( ver un 100 en un conjunto de valores entorno a 5.xn}={xi}. De todo lo comentado. Errores accidentales. podré decir que el valor más probable1 es la media arítmética de mis medidas. y si tengo n medidas de una magnitud. y se dan en cualquer sentido.error) y una probabilidad de que la medida buscada se encuentre en ese intervalo. Pueden ser debidos a un defecto del aparato. x3. una función de densidad de probabilidades normal. son los llamados gazapos. salta a la vista). estas seguirán. Las medidas sometidas a estos errores nunca se deben utilizar para calcular el valor más probable de una magnitud... parece de sentido común que si no voy a poder conocer con exactitud el valor de algo. con el valor más probable Estadística y errores. . se producen por causas deconocidas y aleatorias.. esto es. situado en su centro.. son debidos a la incapacidad de los sentidos o a los errores personales de observación. de anotación. Errores de observación (personales). Así mismo. no obstante tenemos la ventaja a la hora de saber si una medida está sometida a estos errores que estas seven mucho.

Es en definitiva una media de σ ε= = n desviaciones individuales.de campana .la estadística nos dice que el 68% de ellas estarán en el intervalo del entorno del valor real y el 95% en el intervalo ± 2σ. Sin embargo. Sin embargo. se demuestra también en estadística que un mejor estimador de la desviación standard es el siguiente (sobre todo si el número de medidas no es elevado): σ = y esta es la definición de matlab en la función std. ∑δ i =1 n 2 i n−1 que tiene implementada desviación standard Pero nuestro objetivo era calcular el error de la medida. ± σ por lo que siguen una distribución gaussiana . como ocurría con la media. es la raiz cuadrada de las desviacíones al cudrado. Si se han tomado muchas medidas y estas han estado sometidas a errores accidentales.m.η meida esto es: x = ∑ n x n i i = 1 De todas las medidas también podré obtener su desviación respecto de la Así como la desviación media de las medidas respecto de la media. cosa que dijimos que era imposible. podemos dar un intervalo entorno al valor medio y una probabilidad de que el valor real se encuentre dentro de sus límites. Para dar esta medida se define como error más probable el error cuadrático medio que tiene la siguiente expresión: Vemos que el error cuadrático. δ  ≈ ∑ i   n n ⋅ ( n − 1) i i =1 ∑δ n 2 2 . que viene δi = xi −ηx dada por: Y por último la desviación standard n ηδ = ∑δ i =1 i n σ= ∑δ i =1 n 2 i n La desviación standard nos da una idea de la dispersión de nuestras medidas respecto de la media.

por tanto. la segunda depende además del número de medidas y si este número aumenta disminuye el error. vamos a ser capaces de aproximarnos. Podemos concluir. si la distribución de las medidas es aproximadamente gausiana.2ε .ε . cuanto mayor número de mediciones tengamos. . La formula nos dice también que llegará un momento en el que para mejorar muy poco el error tengamos que realizar muchísimas más medidas. como venimos suponiendo. medir. si bién la primera sólo depende de le precisión con que se halla efectuado la medida. una magnitud. ηx+ 2ε ).Pues bién. de acotar más el error. Merece la pena fijarse en las expresiones de la desviación standard y del error cuadrático medio y observar que. la estadística tambien nos demuestra que hay un 68% de probabilidades de que el valor real se halle en el intervalo (ηx. ηx+ ε ) y un 95% de que se halle en el entorno (ηx. que a la hora de valorar.

. si no que. También hemos dicho. Multiplicación y División. si queremos dividir el polinomio P entre el polinomio Q con matlab lo haremos así: »[q. Polinomios y Raices.Q) donde P y Q son polinomios y que como sabemos conv(P. Los polinomios se le describen a matlab como vectores fila de coeficientes ordenados de mayor a menor (desde el coeficiente que acompaña a la variable elevada al mayor exponente al de menor). Polinomios. estos las van a tener reales y complejas. No se deben dejar de poner todos los coeficientes “grado menor” aunque estos sean cero. Suma y Resta.r]=deconv(P. si es necesario.Q). a saber. (+). el cociente y el resto. los puntos en donde dicho polinomio corta a la recta real.(-) La suma de polinomios es como la suma de vectores. Así pues. como consecuencia de lo anterior.POLINOMIOS: INTERPOLACIÓN Y APROXIMACIÓN. La multiplicación de los polinomios es la convolución de sus coeficientes. esta operación se realiza en matlab con la función conv(P. los sumandos deben tener el mismo número de elementos. Esta función da como resultado un vector que contiene las raices del polinomio ordenadas. y como consecuencia eludimos esta dificultad. en general.Q)=conv(Q.(deconv). % que será distinto a dividir Q entre P cumpliendose la igualdad : P=Q*q + r. La división de polinomios es.(roots) Las raices de un polinomios son los llamados ceros del polinomio y se obtienen al resolver la ecuación que resulta de igualar el polinomio a cero. Para conseguir esto se deben añadir ceros en los coeficientes de grado superior al del polinomio. por tanto. que a matlab “no le importa” trabajar con complejos. diremos que las raices de un polinomio se conocen con la función roots(P). Por tanto. donde P es un polinomio cualquiera. sin embargo.P) pues la convolución es comutativa. (poly). (conv). sino que por su propio diseño ya trabaja en el cuerpo de los complejos. la deconvolución de sus coeficientes y como en toda división entera devuelve dos resultados. Aclarado lo anterior. Pero todos sabemos que no todos los polinomios tienen sus raices reales. Son.

son continuas en toda . Evaluar un polinomio en puntos dados. pues resolver la ecuación 5*Polinomio=0 es igual que resolver la ecuación Polinomio=0. obtener un polinomio a partir de sus raices. primero tendremos que dividir el mismo por su coeficiente del término de mayor grado pues este no influye sobre las raices del polinomio. Las funciones más “atractivas” para interpolar son los polinomios y la razón es clara: son funciones fáciles de construir. Supongamos que estamos realizando un seguimiento de la cantidad de oxígeno que queda en el agua de nuestra pecera y analizo una muestra de agua cada dos dias. dado un vector de y raices. Este método interpolación. un polinomio en un conjunto de punto se hace con la función Interpolación polinómica. donde raices es un vector que contiene las raices del polinomio a generar. Existen muchas formas de interpolar entre valores. Para conocer la cantidad de oxígeno que había un día que no medí tendré que de “inventarme” los días un método y que me permita averiguarlo es un con las de muestras anteriores posteriores. Evaluar polyval. Sintáxis: polyval(p. La más sencilla es la de unir los valores de los dos puntos adyacentes al que queremos conocer trazar una recta y sustituir en su ecuación el punto del que queremos conocer el valor.La operación inversa. Conviene mencionar aquí que si queremos factorizar un plonomio. existen se infinitos polinomios en con esas raices de (solamente) unicamente diferencian una constante proporcionalidad. Esto es. la realiza la función poly(Raices) .x) evalua el polinomio cuyos coeficientes están en el vector p en todos los puntos del vector x.

. son infinitamente derivables. por tanto.yi) en el polinomio. Supongamos que hemos realizado un experimento y hemos obtenido n resultados en n estados diferentes. En primer lugar tenemos que ver el número de observacioes.. Tenemos. para n valores de mi variables independiente x he obtenido n valores de una función para mi desconocida. en nuestro caso n . son muy fáciles de evaluar en cualquier punto real.. Para calcularlos empleamos la tabla resultado de nuestras observaciones y sustituimos cada pareja de valores (xi. esto es. a cuyos valores les vamos a llamar y. Dicho de otra forma. etc.+an-1x+an Vemos que en este plonomio propuesto por nosotros como interpolador lo “único” que no cónocemos son los coeficientes.. ...... la siguiente tabla de valores: x x1 x2 x3 . Sabemos tambien que un polinomio de grado n-1 tiene precisamente n coeficientes que son los que nosotros queremos conoces..+an-1 x1+an=y1 p(x2)=y2 .. xn y y1 y2 y3 .. p(x1)=a1x1n-1 +a2 x1n-2+ a3 x1n -3 +.la recta real..... p(xn)=yn Tenemos así un sistema de n ecuaciones con n incógnitas que son los coeficientes que desconocemos y que tiene solución única siempre que las xi sean distintas.. (Nota: la matriz del sistema de ecuaciones de arriba se llama matriz de Vandermonde y su determinante es siempre distinto de cero si los puntos son distintos). Técnica de construcción del polinomio interpolador. siempre tienen solución en una integral. pues nuestro polinomio interpolador v a ser el siguiente: p(x)=a1xn-1+a2xn-2+a3xn-3+. vamos a hacerlo... yn Como sabemos que dados unos puntos lo más cómodo para conocer valores en puntos intermedios es construirse el polinomio interpolador....

Pero si le pedimos un polinomio de grado menor no pasará por todos los puntos ya que tendremos un sistema de ecuaciones con más ecuaciones ( que es igual al número de puntos) que incognitas (que es igual al número de coeficientes del polinomio que le pedimos). y n es el grado del polinomio interpolador que queremos como resultado y que nunca puede ser mayor de n-1. esto es.yi). Sintáxis: polyfit(x. el polinomio resultado pasará por todos los puntos (xi. Interpolación utilizando el método de fft. Interpolación en 2-D. Si a esta función le pedimos un polinomio de grado n-1. y es nuestro conjunto de observaciones.Resolviendo el sistema tendremos entonces resuelto nuestro problema de interpolación. cuidando de desviarse lo mínimo de los valores observados. Esto que acabamos de hacer se puede hacer con matlab paso a paso o con la función polyfit() que tiene implementados ya todos los pasos descritos.y. Otras funciones de interpolación son: interp1 interp2 interpft Interpolation en 1 dimensión. . En este segundo caso matlab resolverá el sistema por el método de los mínimos cuadrados. Ver su sintaxis con help.n) : x es nuestro conjunto de valores de la variable independiente.

Gráficos 2-D Gráficos 3-D Resumen de comandos. Comunicación de matlab con su entorno. Economizar recursos y aumentar velocidad con matlab. Manipulación de strings. Bucles for. Sentencias de control de flujo de programa. .FUNCIONES FUNCIÓN : INTEGRACIÓN NUMÉRICA. Introducción a la integración numérica. Bucles while. Funciones función. Funciones y script. PROGRAMAR CON MATLAB. Sentencias if. Diferencias. Funciones de integración numérica implementadas. Bases. POSIBILIDADES GRÁFICAS. Comandos útiles.

Sign up to vote on this title
UsefulNot useful