Anda di halaman 1dari 54

¿Qué es matlab?

MATrix LABoratory
Es una herramienta de software matemático, que ofrece un entorno de desarrollo integrado con
un lenguaje de programación propio.

Amplia variación para la realización de gráficos en 2D y 3D.

Características:
 Lenguaje de alto nivel.
 Funciones matemáticas.
 Gráficos integrados.
 Herramientas de desarrollo.
 Herramienta para la creación de aplicaciones con interfaces graficas personalizadas.
 Integración con otras aplicaciones y lenguajes.

Espacio de trabajo:

 Matlab Desktop(escritorio de matlab)


 Es posible realizar cambios a la apariencia del escritorio de matlab.
 Es posible realizar cambios las ventas y subventanas.
 Posible hacer las subventanas como ventanas independientes.
(Pantalla por defecto de MATLAB)

(En el botón Layout se puede personalizar la apariencia del inicio de MatLab)

 Command Window
 Se ejecutan interactivamente las instrucciones de matlab y donde se muestran
los resultados correspondientes.
 Ventana más importante.
 Command History
 Todos los comandos que hayan sido ingresados son guardados en esta
subventana.
 Permite ejecutar comandos registrados en ella haciendo doble click.

 Workspace
 Se lista todo el conjunto de variables que están definidas o que se están
utilizando al momento de la ejecución.
 Se puede cambiar el nombre de las variables en el workspace.
 Se pueden copiar, duplicar o borrar las variables.
 Subventana que se puede modificar en el aspecto al gusto.
 Array Editor
 Permite ver los valores de los elementos de cualquier matriz o vector definido
en el programa.
 Puede modificar estos valores.
 Útil para entender ciertos algoritmos.

 Current Folder
 Para que un fichero se puede ejecutar se debe cumplir una de las dos
condiciones siguientes:
1. Que este en el directorio actual.
2. Que este en uno de los directorios indicados en el Path de Matlab.
 Permite ordenar los archivos.
 Permite añadir archivos al Path de Matlab.
 Editor/Debugger
 Es la ventana en la cual se pueden crear, editar o guardar programas en archivos
llamados m-files o ficheros m.
 Permite ejecutar programas paso a paso para poder identificar errores.
 Muestra en distintos colores los correspondientes comandos.
 Puede identificar errores, así como la advertencia para poder quitar dicho error.

El círculo naranja que señala un punto color rojo que significa que ha identificado un error en los
datos de entrada propuestos.

 Help
 Matlab dispone de una ayuda.
 Posible buscar información necesaria para resolver dudas.
MatLab posee una amplia y muy completa función de ayuda, en la parte señalada en el recuadro
se pueden realizar las búsquedas requeridas por el programador

 Profiler
 Es un programa de utilidad que permite saber cómo se ha empleado el tiempo
de la CPU en la ejecución de un determinado programa.
 Permite determinar los cuellos de botella (determina la cantidad de piezas
posibles después de un determinado periodo de tiempo) de un programa.

Preferencias de MATLAB
 MATLAB dispone de un cuadro de dialogo desde el que se establecen todas las
opciones que el usuario puede determinar por su cuenta
 Se pueden cambiar las características del programa
 Los cambios realizados quedan guardados para futuras sesiones de matlab
 Permite modificar en su gran parte las características visuales de matlab
(generalidades del texto)
Comentarios
 ---Se puede hacer más legible el código fuente y más estructurado
 ---Se introducen con el símbolo %

Los comentarios a como se puede ver en la imagen son presentados en color verde por defecto,
estos no aparecen ni afectan en nada a la hora de la ejecución

Tipos de archivos usados en MATLAB


 M-files, extension .m
 Mat-files, extension .mat
 Fig-files, extension .fig
 P-files, extension .p
 Mex-files, extensión .mex

Comandos básicos (clear, clc, home, who, whos, help, helpwin,


format, quit/exit)
 Who hace una lista de variables que existen al momento

 Whos hace una lista de variables que existen pero con más información

 Home lleva el cursor a la primera línea pero no borra los comandos anteriores
 Clc lleva el cursor a la primera línea y borra los comandos anteriores (las variables
siguen en la memoria, en el workspace)

 Clear para eliminar todas las variables en el workspace


 Help este comando seguido de una función nos muestra un texto de ayuda de dicha
función en la misma ventana del command Windows

 Helpwin también muestra un texto de ayuda de alguna función, pero esta vez lo
muestra en una ventana independiente, fuera del command Windows
 Format, permite editar el formato numérico con el que matlab muestra los resultados
en pantalla

 Quit/Exit se utilizan para salir de matlab, ambos comandos funcionan igual

Definición de matrices desde teclado


En matlab las matrices y vectores son variables que tienen un determinado nombre, dicho
nombre se debe ajustar a unas reglas determinadas
Consejo: Usar mayúsculas para definir matrices y minúsculas para vectores y escalares

En MATLAB
*No hace falta declararlas ni establecer su tamaño de antemano
*Es posible definir un tamaño y cambiarlo luego
*Las matrices se definen por filas
*Los elementos de una misma fila se pueden separar por:
-Espacios en blanco
-Comas (,)
*Las filas se separan por:
-Pulsaciones de enter
-Por el carácter punto y coma (;)

Ejemplos de Vectores:

Diferentes especificaciones
se podrán identificar en el
workspace

Se crea un vector, que


también es posible crear
mediante comas, en lugar
de espacios

Si se desea obtener un
vector columna, los
valores deben separarse
por punto y coma (;)

Ejemplos de Matrices:
En el caso de las matrices, se
escriben de igual forma dentro
de corchetes y las filas se
separan mediante punto y
coma

A partir de la introducción de una matriz esta lista para realizar diferentes operaciones con los
valores introducidos

Numeración de los elementos de una matriz


-Diferencias entre el lenguaje de matlab con el de otras herramientas de programación

Como se puede apreciar MATLAB


empieza la numeración de filas y
columnas con el número 1, mientras
C/C++ lo hace desde el 0

Disposición de los elementos de una matriz en la memoria

En matrices MATLAB almacena


los elementos en columnas
Si queremos acceder a algún índice del vector se escribe en la ventana de comandos “x(i)”,
donde “i” es la posición en la que se encuentra el valor del índice que queremos obtener; en
caso de que ingresemos un valor de un índice que no está definido en el vector, MATLAB enviara
un mensaje de error
Ejemplo:

En el caso de matrices se accede a los elementos colocando los dos índices entre paréntesis
separados por una coma, es decir “A(i,j)”, donde “i” es la fila y “j” columna
Ejemplo:

En este caso el valor de la


matriz 1 es el primer elemento,
4 es el segundo elemento, 7 es
el tercer, 2 es el cuarto y así
sucesivamente En este caso la variable
“ans” almacena el valor de
la última ejecución, en este
caso ans=2, por lo tanto si
definimos a=ans+3 el
resultado será 5

También podemos acceder a un valor


por medio de la forma en que se
almacenan los valores en memoria
como vimos en ejemplos anteriores,
en este caso 2 es el elemento 4
Operaciones con matrices
 Operadores aritméticos + - * ‘ ^ \ /
MATLAB puede operar con matrices por medio de operadores y por medio de
funciones

(Operadores aritméticos de MATLAB)


Las operaciones deben de llevar coherencia, por ejemplo, no podemos sumar matrices
que sean de distinto tamaño
Si los operadores no se usan del modo correcto, obtendremos un mensaje de error
Ejemplo:

De igual manera podemos realizar la suma de las


matrices con el comando “plus” y la operación se
deberá escribir en la ventana de comandos de la
siguiente manera: “plus(A,B)
De igual manera podemos hacer operaciones de:
-Resta: A-B o minus(A,B)
-Multiplicación: A*B o mtimes(A,B)

Para el caso de la traspuesta MATLAB cuenta con dos operadores


1. Operador comilla simple (A’)
Realiza la transpuesta conjugada
Función: ctranspose(A)
2. Operador punto-comilla simple(A’)
Realiza la transpuesta no conjugada
Funcion: transpose(A)

Para matrices cuyos elementos son números reales, como es este caso, ambas funciones
devuelven el mismo resultado
En el caso de la potenciación, podemos utilizar el comando “mpower”, para realizar la
operación en la ventana de comandos se hace de la siguiente manera: “mpower(A,x)”,
donde A es la matriz y x es el exponente que deseamos efectuar o podemos realizar la
operación mediante el operador A^x

De igual manera podemos hacer operaciones de matrices con escalares:


MATLAB realiza operaciones de división por medio de escalares

Sin embargo el operador de división tiene otro tipo de uso en MATLAB, donde el
procedimiento requiere de mucha atención:
 Para la resolución de sistemas de ecuaciones lineales:

Considere el siguiente sistema de ecuaciones lineales:


Ax=b
Dónde:
x y b son vectores columna (b conocido)
A es una matriz cuadrada invertible
Para poder realizar el sistema de ecuaciones se puede escribir de las siguientes formas:
1. La primera hace uso de la función “inv()” , para obtener la inversa de la matriz A
x=inv(A)*b
2. Se hace uso de la barra invertida (es preferible usar este comando, ya que no
calcula la inversa, solo resuelve el sistema de ecuaciones)
x=A\b
También se pueden resolver sistemas de ecuaciones lineales de la siguiente forma:
xA=b
Dónde:
x y b son vectores fila (b conocido)
A es una matiz cuadrada invertible
La solución de este sistema se puede escribir de las formas siguientes:
-Usando la función “inv()”
x=b*inv(A)
-Usando el operador slash (/), (es preferible usar este comando, ya que no calcula la
inversa, solo resuelve el sistema de ecuaciones)
x=A/b
 Operadores elemento a elemento .* ./ .^
En MATLAB existe también la posibilidad de aplicar elemento a elemento los
operadores matriciales para ello basta precederlos por un punto
Ejemplo:
Tipos de datos

MATLAB también trabaja con variables escalares, que serían como matrices de
dimensión 1; MATLAB trabaja siempre con doble precisión, es decir, guardando cada
dato en 8 bytes

 Double
Números reales de doble precisión

Double 8 bytes 64 bites


Los bytes se distribuyen de la siguiente forma:

El primer bit es para el “signo” (sign), donde el 0 representa un numero positivo y un


uno un numero negativo.
Los siguientes 11 bits son para el “exponente” (exponent)
Y los 52 bits restantes son para la “fracción” (fraction)

MATLAB también trabaja con su propia representación de números o resultados que


son considerados infinitos, de igual forma tiene su propia representación con
resultados que no son considerados como números, por ejemplo:

Como se puede apreciar en la primera operación el resultado es “Inf” que quiere decir infinito y en
la segunda y tercera operación el resultado es “NaN” que quiere decir Not a Number
Funciones que no tienen argumento en MATLAB:
-“Eps”, devuelve la diferencia entre uno y el número de coma flotante inmediatamente
superior, es decir, representa el número más pequeño posible que puede sumársele a 1
para que (1+eps)>1
eps= 2.2204e-16
-“Realmin”, devuelve el número más pequeño con el que se puede trabajar
realmin= 2.2251e-308
-“Realmax”, devuelve el número más grande con el que se puede trabajar
realmax= 1.7977e+308

 Integer, float y logical

Podemos apreciar que con el comando “int32()” se almacenan los valores con un peso de 8 bytes
Mientras que los comandos “intmin”, representan los valores mínimos que se pueden
representar en MATLAB a 32, 64 y 8 bytes
De igual forma el comando “intmax”, representa los valores máximos que se pueden
representar en MATLAB a 32, 64 y 8 bytes

Función isinteger(i)
Función “class(i)”

Ejemplos:
MATLAB utiliza por
defecto double

Las funciones singles y doubles permiten realizar conversiones entre ambos tipos de
variables

A como se puede apreciar con el


comando “single” el valor de a es
de 4 bits, el comando “double”
toma valores de 8 bits, pero como
vemos en c MATLAB toma valores
doubles por defecto
Por lo tanto, al ingresar los comandos:
-“realmin”, el valor de su ejecución será: 2.2251e-308
-“realmax”, el valor de su ejecución será: 1.7977e+308

Del mismo modo, al ingresar los comandos anteriores seguidos de la función single o
duble, los resultados serán:
-“realmin(‘single’)”= 1.1755e-38
-“realmax(‘single’)”= 3.4028e+38

Función isofloat(x)
Permite saber si “x” es una variable real ya sea de simple o doble precisión, en el caso
de que lo sea se muestra un 1 y de no ser así se muestra un 0
Variables “logical”

Solo pueden tomar valores 1 (verdadero) y 0 (falso)


La variable logical se usa principalmente para separar o extraer los elementos de una
matriz o vector que cumplen cierta condición y operar luego selectivamente sobre
dichos elementos

En este ejemplo se desean conocer los elementos mayores a 5 que estén en la matriz A,
por lo tanto podemos observar la ejecución del comando j=A, y la ejecución devuelve
valores falsos o negativos; si deseamos comprobar que la matriz j es logical, escribimos
el comando isa(j,’logical’) y el resultado deberá ser 1.
Si deseamos intercambiar los valores mayores que 5 en la matriz deberemos ejecutar el
comando A(j)=x, donde x será el nuevo valor que deseamos poner.

 Números complejos
En muchos casos matriciales los datos y/o resultados no son reales sino
complejos con parte real y parte imaginaria.
MATLAB representa la parte imaginaria de los números complejos mediante las
letras i o j.
A como podemos observar en estos ejemplos MATLAB, devuelve 2 resultados, un
número complejo y el valor imaginario (véase el ejemplo de a=sqrt(-4), sabemos que el
resultado de una raíz negativa es un número complejo)
Al momento de trabajar con números complejos se recomienda no utilizar variables
con i y/o j, es decir no definirlas con un valor numérico.

Función complex(a,b)

MATLAB dispone de una función llamada complex, que crea un número complejo a
partir de dos argumentos que representan la parte real e imaginaria.
 Cadena de caracteres

MATLAB puede definir variables que contengan cadenas de caracteres.


En MATLAB las cadenas de texto van entre comillas simples:
‘Ejemplo de cadena de texto’

En el workspace
podemos apreciar
que se guarda
como caracter
Operaciones con matrices y vectores

 Variables y expresiones matriciales


-Variable: nombre que se da a una entidad numérica, que puede ser una matriz, un
vector o un escalar.
-Expresión:
1. Asignando un resultado a una variable:
y= (5*4)+6+;
2. Simplemente evaluando el resultado
(5*4)+6; (este valor se asigna automáticamente a la variable ans)

Se conoce que por defecto una expresión termina al pulsar enter, pero si se desea
seguir con la expresión en la siguiente línea se deben introducir 3 puntos)

-Nombres de variables:
*Deben empezar siempre por una letra.
*Pueden constar de hasta 63 letras y números.
*namelengthmax: Permite preguntar al programa por el número máximo de caracteres
permitidos como nombre de una variable. (El resultado será 63)
*MATLAB distingue entre mayúsculas y minúsculas (Case Sensitive)
*El carácter guion bajo (_) se considera como una letra.
*No es posible definir variables con el mismo nombre que las palabras clave de
MATLAB. (Para obtener la lista de palabras claves se usa el comando “iskeyword”
*MATLAB si permite crear variables con el mismo nombre que una función.
 Otras formas de definir matrices

1. Matrices predefinidas

-eye(N), crea una matriz identidad de tamaño NxN


-zeros(N), forma una matriz de ceros de tamaño NxN
-zeros(N,M), forma una matriz de ceros de tamaño NxM
-ones(N), forma una matriz de unos tamaño NxN
-ones(N,M), forma una matriz de unos tamaño NxM
-linspace(x1,x2,N), genera un vector con N valores igualmente espaciados entre x1 y
x2.
-logspace(d1,d2,N), genera un vector con N valores, espaciados logarítmicamente
entre 10^d1 y 10^d2.
-rand(N), forma una matriz de tamaño NxN de números aleatorios entre 0 y 1, con
distribución uniforme.
-rand(N,M), forma una matriz de tamaño NxM de números aleatorios entre 0 y 1,
con distribución uniforme.
-randn(N), forma una matriz de tamaño NxN de números aleatorios con distribución
gaussiana de media 0 y desviación estándar 1.
Randn(N,M), forma una matriz de tamaño NxM de números aleatorios con
distribución gaussiana de media 0 y desviación estándar 1.
-magic(N), forma una matriz de tamaño NxN construida a partir de números enteros
de 1 hasta N^2 con la propiedad de que todas las filas, columnas y diagonales
suman lo mismo.

2. Formación de una matriz a partir de otra

-Recibiendo algunas de sus propiedades. (Ej: Tamaño)


-Por composición de varas sub-matrices más pequeñas)

*Funciones auxiliares:
-size(A), devuelve el número de filas y el número de columnas de la matriz
A.
-length(x), devuelve el número de elementos de un determinado vector x.
-zeros(size(A)), forma una matriz de ceros del mismo tamaño de una
matriz A previamente creada.
-ones(size(A)), forma una matriz de unos del mismo tamaño de una matriz
A previamente creada.
-diag(x), forma una matriz diagonal cuyos elementos de su diagonal son los
mismos del vector x.
-diag(A), forma un vector a partir de los elementos de la diagonal de la
matriz ya existente A.
3. A partir de un archivo o fichero
Se pueden crear archivos .m, que luego son reconocidos por el command window al
momento de una ejecución.

-Ficheros de comandos (Script), al ejecutarse en el command window, toda variable


creada en el script pasa a formar parte del espacio de trabajo base (Workspace)
-Archivo de función, al ejecutarse en el command window, toda variable creada
forma parte solamente del espacio de trabajo de dicha función.

4. Direccionamiento de matrices y vectores a partir de vectores


x(v) equivale al vector x(v(1)), x(v(2)),…
5. Formación de una matriz a partir de funciones
Se pueden definir matrices por medio de funciones de librería.

Operaciones con matrices y vectores

Operador dos puntos (:)


*Funciones:
-Crear vectores.
-Seleccionar filas, columnas o partes de una matriz.
-Especificar iteraciones.
Matriz vacía A[] (Borrador de columnas y filas)

La matriz A=[], existe pero está vacía


Esta matriz vacía sirve para eliminar elementos de una matriz que no está vacía.
Ejemplo:
A=[2 1 0; 4 5 8; 7 1 0], B=[]
Si se desea elimina la columna 3, se pone el comando A(:, 3)=[]

Operadores racionales <, >, <=, >=, ==, ~=

Símbolos que se usan para comparar dos valores


En ejercicios con operadores racionales, se utiliza el mismo lenguaje de verdaderos (1)
y falsos (0)
Ejemplo:

Operadores lógicos. &, I, &&, II, ~, xor

Los operadores lógicos se combinan con los relacionales para poder comprobar el
cumplimiento de condiciones múltiples.
Programación en MATLAB

MATLAB posee la opción de desarrollo de “scripts” que facilitan la elaboración y las


operaciones de un programa, luego de esto se desarrollan los comandos.

Estructura general de MATLAB

MATLAB posee una estructura que consta de 4 pasos principales:


1. Los comentarios en los que se suelen poner breves descripciones acerca del
programa que está próximo a desarrollarse.
2. Datos de Entrada.
3. Algoritmo
4. Datos de Salida.

Estilos de programas

Para decir que un programa está desarrollado correctamente se recomienda seguir las
siguientes indicaciones:
1. La lectura del programa debe ser fácil de entender.
2. Los comentarios son recomendados para facilitar las aclaraciones del programa.
3. Definir las variables del programa desde el principio.
4. Para ver donde empiezan y donde acaban los ciclos y condicionales es costumbre
introducir una sangría en las líneas contenidas en ellos.

Control de flujo

MATLAB es una herramienta la cual permite la toma de decisiones, a este proceso se le


llama Control de flujo

En MATLAB tenemos los siguientes comandos para condicionales

 If-else
 Switch

Para ciclos los comandos son:

 For
 While
Condicionales:
Los condicionales permiten realizar una u otra operación según se cumpla o no
determinada condición.

En los diagramas, las condiciones se cierran con rombos, mientras que la sentencia u
bloques de código se cierran por rectángulos
if
If: condición sentencias
End
La condición del if puede ser una condición matricial, del tipo A—B, donde A y B son
matrices del mismo tamaño.
Una condición de la forma A῀=B, donde A y B son matrices del mismo tamaño.
En resumen if A==B exige que todos los elementos sean iguales.
If A῀=B exige que todos los elementos sean diferentes.
Como se había dicho MATLAB cuenta con funciones para resolver operaciones
matriciales como:
Isequal(A, B): Devuelve un uno si las dos matrices son idénticas y un cero en caso de
que difieran en algo, además las variables de tipo cadena no pueden ser comparadas
mediante los operadores == o ῀=
Sentencia switch – case – otherwise
Su forma general es:

Switch var
Case opción 1
Bloque1
Case opción 2
Bloque2
Case opción 3
Bloque3
Otherwise
Bloque4
End.

Ciclos: controlan un conjunto de instrucciones que deben repetirse cierto número de


veces, mientras se cumpla una condición que se debe ser claramente especificada.
Partes de un ciclo
Decisión: Donde se evalúa la condición y, en caso de ser cierta, se ejecuta el cuerpo del
ciclo.
Cuerpo del ciclo: son las instrucciones que se ejecutaran repetidamente, un número
determinado de veces, siempre que la decisión sea verdadera.
Salida del ciclo: Es la condición que indica cuando terminan las iteraciones
MATLAB permite el desarrollo de todo tipo de programas, el cual posee su propio
lenguaje de programación. Aparte MATLAB permite introducir programas ya hechos sin
la necesidad de descargar aplicaciones o realizar procesos extra.
Como ya hemos estudiado los programas en MATLAB suelen escribirse en los ficheros
.m, comúnmente estos ficheros son Scripts que resultan más sencillos.

Lectura y escritura interactiva de variables (input, disp, fprintf)

 Función input: Permite imprimir un mensaje en la línea de comandos de


Matlab y recuperar como valor de retorno un valor numérico o el resultado de
una expresión tecleada por el usuario, después de esto, el programa espera
que el usuario teclee el valor numérico o la expresión, una vez introducida es
evaluada en las variable de Matlab y el resultado es regresado como un valor
retorno.
 Función disp: Permite imprimir en pantalla un mensaje de texto o el valor de
un vector o matriz, pero sin imprimir su nombre.
 Función fprintf: Es otra función para mostrar un mensaje o un resultado, pero
que permite mezclar texto y valores numéricos de las variables y también se
pueden ajustar el formato de los números.

Ficheros de comandos (Scripts)

Son ficheros con un nombre tal como «file1.m» que contienen una sucesión de
comandos análoga a la que se teclearía en el uso interactivo del programa. Dichos
comandos se ejecutan sucesivamente cuando se teclea el nombre del fichero que los
contiene. Cuando son ejecutados desde la línea de comandos, las variables pertenecen
al trabajo base de MATLAB, por el contrario, si se ejecuta desde una función, las
variables pertenecen al espacio de trabajo de la función.

Funciones
Características:
1. -En Matlab una función no puede definir nunca los argumentos que recibe, de cara
al entorno que ha realizado la llamada.
2. -Los resultados de una función en MATLAB se obtienen siempre a través de los
valores de retorno, que pueden ser múltiples y matriciales.
3. - Tanto el número de argumentos como el de valores de retorno no tienen que ser
fijos, dependiendo de cómo el usuario llame a la función.
4. -Las variables definidas dentro de una función son variables locales.
5. -Para que la función tenga acceso a variables que no han sido pasadas como
argumentos es necesario declarar esas variables como variables globales.
6. La ejecución de una termina cuando se llega a su última sentencia ejecutable. Si se
quiere forzar el que esta termine se puede usar la sentencia return, que devuelve
inmediatamente el control al entorno de llamada.
Referencias de función

Desarrolla mecanismos para darle nombre a una función.

Funciones Recargadas: funciones diferentes que tienen el mismo nombre pero se


diferencian entre número y tipo de argumento.

Referencias de función
La referencia de función permite al usuario mantener el control sobre la función
que se está desarrollando.

Las referencias de función se efectúan de dos maneras:


 Mediante el operador at (@), se antepone @ y seguidamente el nombre de
la función.
 Str2func, esta recibe como argumentos una cadena de caracteres (menos
de 31) esta contiene el nombre de la función la cual es devuelta como
referencia de función.

Otras utilidades de las funciones:


 Acceder a funciones privadas y subfunciones.
 Se pueden crear funciones anónimas.

Características de las funciones anónimas:

 Estas se pueden usar como cualquier función


 Son útiles para otras funciones que requieren otras funciones como entrada.
 Si las funciones no tienen argumentos hay que poner los paréntesis vacíos.
Tanto al definir el nombre de la función
 Estas están limitadas por una sola expresión ejecutable en Matlab.
Depurador de MATLAB

Depuración: Proceso en el cual es posible aislar y solucionar problemas con su código.


La depuración permite corregir dos tipos de errores:

1. Error en la sintaxis.
2. Errores en tiempo de ejecución.

Comandos del debugger.

El debugger consiste en un conjunto de comandos adicionales, dirigidos a realizar su


tarea de detección y corrección de errores. Estos comandos son fácilmente
distinguibles, pues todos comienzan por db. Los principales comandos del debugger de
MATLAB son los siguientes:

 dbstop inserta un breakpoint o punto de interrupción en la línea indicada


 dbclear elimina un breakpoint
 dbcont continúa con la ejecución detenida
 dbstack lista las llamadas a funciones, es decir qué función llama a qué función
 dbstatus lista los breakpoints vigentes
 dbstep ejecuta una o más sentencias
 dbtype lista los ficheros *.m, asignando números de línea
 dbup vuelve al espacio de trabajo de la función que ha llamado a la función
actual
 dbdown cambia al espacio de trabajo de la función que ha sido llamada
 dbquit sale del modo debug
Depuración (Debugging) de Funciones.

Ahora se mostrará cómo se utiliza el debugger, por medio de un ejemplo desarrollado


paso apaso. Síganse con atención las siguientes instrucciones:

INICIO DE UNA SESIÓN DE DEBUGGER

Para ver cómo se utiliza el debugger en un caso concreto, considérense los siguientes
pasos:

1. Inicie la sesión de debugger creando los siguientes ficheros, llamados test.m y test1.m

test.m

function a=test(b)

c = sqrt(b)*cos(b);

a = test1(b,c);

test1.m

function a=test1(b)

q = cond(b);

[w,e] = eig(c);

a = w*q;

2. Utilizando el comando dbtype puede obtener el listado de estas funciones con los
números de cada línea, y puede aprovechar también para ver cómo es una función
propio de MATLAB (por ejemplo, la función condición numérica cond).

3. Inserción de breakpoints. Se puede insertar un breakpoint antes de la primera línea


ejecutable de test.m mediante el comando:

dbstop in test

Para insertar un breakpoint en la línea 19 de la función cond hay que teclear:

dbstop at 19 in cond

EJECUCIÓN EL FICHERO *.M

Para ejecutar el programa con debugger, síganse los siguientes pasos:

1. Después de incluir los breakpoints, ejecútese test y compruébese que se detiene en


la

línea 2.

test(magic(3))
2 c=sqrt(b)*cos(b);

2. Puede obtenerse una especie de mapa de las llamadas a todas las funciones que ha
habido hasta el momento, con el comando dbstack.

3. Para continuar con la ejecución del programa, tecléese dbcont. La ejecución prosigue
hasta alcanzar el siguiente breakpoint.

4. Se pueden ver cuántas nuevas llamadas a función ha habido hasta ahora con el
comando

dbstack.

COMPROBACIÓN DEL VALOR DE LAS VARIABLES.

Para conocer el valor de las variables del programa que desee, procédase del siguiente
modo:

1. Se pueden conocer las variables que se están utilizando en ese espacio de trabajo
tecleando los comandos who o whos.

2. Para conocer el valor de cada variable en particular es suficiente con teclear su


nombre.

3. Con el comando dbstep el programa avanza únicamente una nueva línea o sentencia.

4. Tecleando nuevamente who se ve que en la línea 20 ha aparecido una nueva variable


en este espacio de trabajo.

11.4.4 CAMBIO DE ESPACIO DE TRABAJO.

Pruebe a realizar las siguientes tareas:

1. Se puede ir al espacio de trabajo de la función que llamó a cond tecleando dbup.

2. Se pueden conocer las variables que son accesibles desde este espacio de trabajo
tecleando who, y el valor de cada una de ellas tecleando su nombre.

11.4.5 CREACION DE UNA NUEVA VARIABLE.

Una de las cosas que se puede hacer con el debugger es crear una nueva variable. Esto
se hace del siguiente modo:

1. Tecleando new_var=123 se introduce una nueva variable.

2. Se puede ver que esta variable también aparece cuando se teclea who o whos.

A partir de aquí está invitado a cambiar de espacio de trabajo, a conocer el valor de


variables o a avanzar cuanto quiera en la ejecución del programa.

11.4.6 FIN DEL PROCESO DE DEBUG.


Para terminar la ejecución del debugger y volver al modo normal, hay que hacer lo
siguiente:

1. Cuando crea que ya ha encontrado el error, puede finalizar la sesión tecleando


dbquit.

2. Puede darse cuenta de que los breakpoint siguen vigentes si teclea dbstatus test.

3. Para borrar los breakpoints utilice dbclear.

1. Herramientas avanzadas de depuración

 Sumatoria.m

 Set condition

 Continue

2. Herramienta “Profiler”

En la creación de un programa no solamente es importante hacer que funciones y se


ejecute sino que también pueda gastar lo más mínimo de recursos en cuanto a
memoria, espacio y velocidad de arranque.

Esta herramienta permite determinar qué secciones específicas del código consumen
cantidades excesivas del tiempo total de ejecución, lo que permite la posibilidad de
optimizar estas secciones específicas de código

Permite saber el tiempo que se requiere para ejecutar el script y todas las funciones
que éste llama. Luego, podemos usar esta información para optimizar nuestro código y
hacer que se ejecute más rápido.
Características de las funciones en MATLAB
El concepto de función en Matlab es semejante al de c y al de otros lenguajes de
programación, aunque con algunas diferencias importantes al igual que es una función
tiene nombre valor de retorno y argumentos una función se llama utilizando su nombre
en una expresión utilizando lo como un comando.

Por ejemplo:
>> [ máximo, posmax] = max (x);
>> r = sqrt(x^2+y^^2) + eps;
>> a= cos(alfa)- sin(alfa);

Una diferencia importante con otros lenguajes que Matlab las funciones pueden tener
valores de retorno matriciales múltiples.
Una característica de Matlab es que las funciones que no tienen argumentos no llevan
paréntesis por lo que a simple vista no siempre son fáciles de distinguir de las demás
variables.

Funciones que operan de modo escalar


Estas funciones las cuales comprenden las funciones matemáticas que la hacen
trascendentales y otras funciones básicas cuando se aplican una matriz actúan sobre
cada elemento de la matriz como si se tratase de un escalar Por tanto se aplican de la
misma forma a escalares vectores y matrices.

Por ejemplo; (sin, cos, log, log10, ex, sqrt, round, fix, ceil, floor, abs, atan, atan2)

Funciones que actúan sobre vectores


Estas funciones solo actúan sobre vectores, aunque también se pueden utilizar sobre
matrices, pero con una aplicación diferente, estas son las siguientes; Max, min, sum,
cumsum, mean, std, prod, cumprod, sort.

Funciones que actúan sobre matrices


Cadenas de caracteres
MATLAB trabaja también con cadenas de caracteres, con ciertas semejanzas y también
diferencias respecto a C. A continuación se explica lo más importante del manejo de
cadenas de caracteres en MATLAB.
FUNCIONES PARA MANEJO DE CADENAS DE CARACTERES
Los caracteres se almacenan en un vector, un carácter por elemento. Cada carácter
ocupa un byte. Las cadenas de caracteres van entre apóstrofos o comillas simples. A
continuación puede ver –y practicar con ellos– algunos ejemplos:
» c='cadena'
c = cadena
» size(c)
ans = 1 6
» abs(c) % devuelve los números ASCII de cada carácter
ans = 99 97 100 101 110 97
» setstr(abs(c)) % convierte números ASCII en caracteres
ans = cadena

Otras funciones para manejo de caracteres son las siguientes:


*disp(c) imprime el texto contenido en la variable c
*isstr detecta si una variable es una cadena de caracteres
*strcmp comparación de cadenas. Funciona de modo diferente que la
correspondiente función de C. Si las cadenas son iguales devuelve un uno, y si no lo
son, devuelve un cero
*s=[s,' y más'] concatena cadenas, añadiendo la segunda a continuación de la primera
*int2str convierte un número entero en cadena de caracteres
*num2str convierte un número real en cadena de caracteres, con cuatro cifras
decimales por defecto (pueden especificarse más cifras, con un argumento opcional)
* sprintf convierte valores numéricos en cadenas de caracteres, de acuerdo con
las reglas y formatos de conversión del lenguaje C. Esta es la función más general para
este tipo de conversión

A continuación se pueden ver algunos ejemplos:


» num2str(pi)
ans = 3.142
» num2str(pi,8)
ans = 3.1415927

LAS FUNCIONES EVAL Y FEVAL


La función eval('cadena de caracteres') hace que se evalúe como expresión de MATLAB
el texto contenido entre las comillas como argumento de la función. Este texto puede
ser un comando, una fórmula matemática o -en general- una expresión válida de
MATLAB. La función eval puede tener los valores de retorno necesarios para recoger los
resultados de la expresión evaluada.
Esta forma de definir macros es particularmente útil para pasar nombres de función a
otras funciones definidas en ficheros *.m.
El siguiente ejemplo va creando variables llamadas A1, A2, ..., A10 utilizando la
posibilidad de concatenar cadenas antes de pasárselas como argumento a la función
eval:
for n = 1:10
eval([’A’num2str(n)’ = magic(n)’])
end
Por su parte la función feval sirve para evaluar, dentro de una función, otra función
cuyo nombre se ha recibido como argumento. Por ejemplo, si dentro de una función se
quiere evaluar la función calcular(A, b, c), donde el nombre calcular se envía como
argumento en la cadena nombre, entonces feval(nombre, A, b, c) equivale a calcular(A,
b, c).
Estructuras
Una estructura es una agrupación de datos de tipo diferente bajo un mismo nombre. A
los datos les llamamos campos. No hace falta definir previamente el modelo de la
estructura, podemos ir creando los distintos campos uno a uno.
Otra forma de crear estructuras es mediante el comando struct, donde los nombres de
los campos se escriben entre apóstrofos (') seguidos del valor que se les quiere asignar.
Este valor puede ser la cadena vacía ('') o la matriz vacía ([]).
Funciones para manipular estructuras
-fieldnames() devuelve un vector de celdas con cadenas de caracteres que
recogen los nombres de los campos de una estructura
-isfield(ST,s) permite saber si la cadena s es un campo de una estructura ST
-isstruct(ST) permite saber si ST es o no una estructura
-rmfield(ST,s) elimina el campo s de la estructura ST
-getfield(ST,s) devuelve el valor del campo especificado.
-setfield(ST,s,v) da el valor v al campo s de la estructura ST.
Estructuras anidadas
MATLAB permite definir estructuras anidadas, es decir una estructura con campos que
sean otras estructuras.
Para acceder a los campos de la estructura más interna se utiliza dos veces el operador
punto (.).
Vectores y matrices de estructuras
• Pueden crearse vectores y matrices (e hipermatrices) de estructuras. Por ejemplo,
la sentencia,
>> alum(10) = struct('nombre', 'Ignacio', ‘matricula', 089)
• crea un vector de 10 elementos cada uno de los cuales es una estructura tipo
alum.
• Sólo el elemento 10 del vector es inicializado con los argumentos de la función
struct(); el resto de los campos se inicializan con una cadena vacía o una matriz vacía.
• Para dar valor a los campos de los elementos restantes con sentencias del tipo:
>> alum(i).nombre='Noelia', alum(i).matricula=524;
• MATLAB también permite añadir un nuevo campo a un arreglo de estructuras en
cualquier momento.
• Por ejemplo podemos añadir el campo edad a todos los elementos del vector
alum, aunque sólo se da valor al campo del elemento 5,
>> alum(5).edad=18;
• Para ver el campo edad en los 10 elementos del vector puede teclearse el
comando:
>> alum.edad
Vectores/ matrices de celdas (Cell Arrays).
• Un vector (matriz o hipermatriz) de celdas es un vector (matriz o hipermatriz)
cuyos elementos son cada uno de ellos una variable de tipo cualquiera.
• En un arreglo ordinario todos sus elementos son números o cadenas de
caracteres. Sin embargo, en un arreglo de celdas, el primer elemento puede ser un
número; el segundo una matriz; el tercero una cadena de caracteres; el cuarto una
estructura, etc.
• Es importante que el nombre del arreglo de celdas no haya sido utilizado
previamente para otra variable (si así fuera, se obtendría un error). Si es preciso se
utiliza el comando clear.
• Para crear un arreglo de celdas introducimos los valores deseados separados por
espacios, comas o punto y coma según sean filas o columnas) todo ello entre llaves {}.
>> nombre_array={e1 e2 … en}
• El sistema de indexación que se usa para arreglos celdas es el mismo que se usa en
otros arreglos.
• Existen dos enfoques tanto para asignar como para recuperar información de los
arreglos celda: con paréntesis o con llaves pero debemos ser cuidadosos.
• Por ejemplo para asignar valores podemos usar
nombre_array(1)={e1} o nombre_array{1}=e1
• Para acceder a los valores podemos usar
nombre_array(1) o nombre_array{1}, sin embargo, hay una sutil diferencia. Si usamos
la primer opción accedemos a la celda, si usamos la segunda opción accedemos al valor
almacenado dentro de la celda.
• Para acceder a un elemento particular dentro de un arreglo almacenado en un
arreglo celda, debe usar una combinación de llaves y paréntesis, llaves para definir la
posición de la celda y paréntesis para definir la posición del elemento del arreglo.
• Los ejemplos clarificarán estos conceptos.
Funciones para arreglos de celda
 cell(m,n) crea un cell array vacío de m filas y n columnas
 celldisp(ca) muestra el contenido de todas las celdas de ca
 cellplot(ca) muestra una representación gráfica de las distintas celdas
iscell(ca) indica si ca es un vector de celdas
 num2cell() convierte un array numérico en un cell array
 cell2struct() convierte un cell array en una estructura
 struct2cell() convierte una estructura en un cell array
Introducción a gráficos 2D

Una característica muy útil de Matlab es su capacidad de generar gráficos de alta


calidad en 2D y 3D utilizando comandos simples flexibles.
Todos los gráficos se generan en una ventana independiente de la ventana de texto.
Esos gráficos se pueden generar tanto de los datos calculados en Matlab como de los
datos no calculados en Matlab, esta imagen puede ser exportada e impresa en una
gran variedad de dispositivos de salida.

Matlab tiene una ventana independiente para realizar las operaciones gráficas, existen
unos comandos que abren esta ventana y otros que se utilizan para dibujar sobre la
ventana activa ya sea sustituyendo lo que hubiera en ella o bien añadiendo nuevos
elementos gráficos a un dibujo anterior.

Funciones graficas 2D elementales


Matlab cuenta con 5 funciones graficas elementales para generar gráficos 2D y estas se
diferencian por el tipo de escala que utilizan en los ejes de abscisas y de ordenadas.

Estas funciones son las siguientes;


Plot() crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.
Plotyy() dibuja dos funciones con dos escalas diferentes para las ordenadas, una ala
derecha y otra ala izquierda de la figura.
Loglog() es igual a las anteriores con la diferencia que tiene escala logarítmica en
ambos ejes.
Semilogx() igual a las otras con escala lineal en el eje de las ordenadas y logarítmica en
el eje de las abscisas.
Semilogy() igual a las demás con escala lineal en las abscisas y logarítmica en el eje de
las ordenadas.

Función plot
Esta es la función clave de todos los gráficos 2D en Matlab, el elemento básico de este
tipo de graficas es el vector. Se utilizan también cadenas de 1,2 o 3 caracteres para
indicar colores y tipos de líneas.
La tarea de esta función es la de crear vectores, también existe una segunda forma de
utilizar la funcione plot() e con dos vectores como argumentos. En este caso los
elementos del segundo vector se representan en ordenadas frente a los valores del
primer, que se representan en abscisas.
Por medio del comando title podemos añadir un título a la gráfica.
Por medio del comando Xlabel() se puede añadir una etiqueta o rotulo al eje de
abscisas, de igual forma ylabel() añade una etiqueta al eje de las y.
El comando grip activa la función de una cuadricula de dibujo y añadiendo off
desaparece la cuadricula.
El comando legent () define rótulos para las distintas líneas o ejes utilizados en la figura.
La función plot () dibuja una nueva figura en la ventana activa, sustituyendo cualquier
cosa que hubiera dibujada anteriormente en esa ventana; o abre una nueva figura si no
hay ninguna abierta.
La función plot () permite también dibujar múltiples curvas introduciendo varias parejas
de vectores como argumentos. En este caso, cada uno de los segundos vectores se
dibujan en ordenadas como función de los valores del primer vector de la pareja que se
representan en abscisas.
Plot (x, A) Dibuja las columnas (o filas) de A en ordenadas frente al vector x en abscisas.
Las dimensiones de A y x deben ser coherentes.
Plot (A, B) dibuja las columnas de B en ordenadas frente a las columnas de A en las
abscisas, dos a dos. Las dimensiones deben coincidir.

Funciones hold, subplot y axis


Para añadir líneas a un gráfico ya existente sin destruirlo y sin abrir una nueva ventana
se utilizan los comandos hold on- hold off, el primer comando hace que los gráficos
sucesivos respeten los que ya se han dibujado en la figura. Aunque es posible que haya
que modificar la escala de los ejes, mientras que el comando hold off deshace el efecto
de hold on.
El comando subplot (m, n, i) se usa para dividir una ventana grafica m particiones
horizontales y n verticales, con objeto de representar múltiples gráficos en ella.
La función axis () cuando se trata de ejes Matlab tiene sus opciones por defecto y para
cambiarlas es útil esta función.

Función figure
Al usar la función figure sin argumentos, se crea una nueva ventana grafica con el
numero consecutivo que le corresponda.
El comando figure (n) hace que la ventana n pase a ser la ventana o figura activa. Si
dicha ventana no existe, se crea una nueva con el número consecutivo que le
corresponda.
UNIVERSIDAD NACIONAL DE INGENIERIA

INTRODUCCION A LA PROGRAMACION PARA LA INGENIERIA QUIMICA

REPORTE MATLAB

NOMBRE:
 David Carlos Alaniz Moreira

TUTOR:
Sergio Álvarez

GRUPO
2M1-Q

MANAGUA, 03 de julio de 2019

Anda mungkin juga menyukai