Está en la página 1de 102

Luis O.

Moncada Albitres

Luis D. Moncada Torres

Guía de MATLAB para


principiantes
Guía de MATLAB para principiantes

Autores:

Luis O. Moncada Albitres

Luis D. Moncada Torres

Editor:

© Luis David Moncada Torres

Jr. Negrón Ugarte N°957 – Las Quintanas

luisd.moncada@hotmail.com

Trujillo – Perú

Primera edición digital, febrero 2020

ISBN: 978-612-00-5024-8

Libro digital disponible en www.ingenieriaquimica.tech


PROLOGO

Guía de MATLAB para principiantes está dirigido a estudiantes que utilizan


MATLAB por primera vez y que no tienen conocimientos previos sobre
programación. El presente libro tiene por objetivo proporcionar a los
estudiantes conocimientos básicos para usar el entorno de MATLAB
básicamente como una herramienta para la resolución de problemas. La obra
se puede utilizar como un libro de texto para estudiantes de los primeros cursos
de ingeniería.

El orden de la presentación de los temas ha sido elaborado a partir de la


experiencia en la enseñanza de MATLAB en cursos introductorios de
ingeniería.

El Capítulo 1 nos describe el entorno de trabajo y conceptos básicos de


MATLAB, el Capítulo 2 trata la representación de gráficos en dos dimensiones,
mientras que el Capítulo 3 trata sobre la utilización del programa para resolver
operaciones matemáticas desde unas muy básicas como operaciones
aritméticas hasta más complejas como EDOs.

El capítulo 4 trata sobre como MATLAB puede ser usado para realizar
operaciones con polinomios, el Capítulo 5 muestra el uso de gráficos en tres
dimensiones, en el Capítulo 6 se explican los M-archivos, el diseño de
funciones y la creación de ficheros script.

La programación en MATLAB se aborda en el Capítulo 7, donde se explican


desde las sentencias condicionales hasta los bucles. El Capítulo 8, es el último
capítulo del presente texto y se aborda la interfaz gráfica de MATLAB.
INDICE
1. INICIANDO MATLAB 1
1.1. ¿Qué es MATLAB? 1
1.2. Entorno de trabajo 1
1.3. Asignaciones 3
1.4. Vectores y Matrices 4
1.5. Diferentes formatos para los datos 7
1.6. WHO, WHOS, CLEAR 7
2. GRAFICAS 2D EN MATLAB 9
2.1. El comando plot 9
2.2. El comando subplot 15
2.3. Otras gráficas 16
3. OPERACIONES MATEMÁTICAS 25
3.1. Aritmética elemental 25
3.2. Funciones matemáticas comunes 27
3.3. Ecuaciones 30
3.4. Sistema de ecuaciones lineales 31
3.5. Series 33
3.6. Límites 34
3.7. Derivada de una función 35
3.8. Integral de una función 35
3.9. Ecuaciones diferenciales 37
4. OPERACIONES CON POLINOMIOS 42
4.1. Polinomios 42
4.2. Valor de un polinomio 42
4.3. Ajuste a un polinomio 43
4.4. Suma de polinomios 44
4.5. Producto de dos polinomios 45
4.6. Cociente 45
4.7. Derivada 46
4.8. Integral 46
4.9. Raíces de un polinomio 47
4.10. Factorización 48
4.11. Expansión 48
5. GRAFICAS 3D EN MATLAB 49
5.1. Comando plot3 49
5.2. Comando comet3 50
5.3. Comando mesh 50
5.4. Comando surf 53
6. M-ARCHIVOS 60
6.1. Editor 60
6.2. Script 60
6.3. Funciones 62
7. DECISIONES y CICLOS 64
7.1. Sentencia condicional if 64
7.2. Sentencia condicional if else 67
7.3. Sentencia if anidada 70
7.4. Bucle for 72
7.5. Bucle while 75
8. INTERFAZ GRÁFICA DE USUARIO 78
8.1. Introducción 78
8.2. Inicio 78
8.3. Propiedades de los componentes 81
8.4. Funcionamiento de una aplicación GUI 83
8.5. Manejo de datos entre los elementos de
la aplicación y el archivo .m 83
8.6. Sentencias GET Y SET 84
8.7. Radio Button, Button Group 87
8.8. ListBox 90
9. BIBLIOGRAFIA 93
Guía de MATLAB – Para principiantes

1. INICIANDO MATLAB
1.1. ¿Qué es MATLAB?
Es una herramienta computacional para realizar cálculos numéricos con
vectores y matrices, además también se puede trabajar con números
escalares, cadenas de caracteres y con otras estructuras de información más
complejas. MATLAB es el nombre abreviado de MATrix LABoratory.

1.2. Entorno de trabajo

MATLAB dispone de las siguientes sub-ventanas:

2
1 4

1. Ventana de comandos (Command Window)


2. Directorio actual (Current Folder)
3. Espacio de trabajo (Workspace)
4. Historial de comandos (Command History)

Ventana de comandos (Command Window)


La parte más importante de la ventana inicial es la Ventana de comandos. En
esta ventana es donde se ejecutan los comandos luego del promp
característico >>.

1
Guía de MATLAB – Para principiantes

El símbolo >> determina la línea de comandos donde podremos escribir y


ejecutar los comandos.

Importante:
• Para teclear un comando el cursor debe estar situado después del
símbolo >>.
• Una vez que el comando se ha tecleado, se pulsa la tecla Intro para
ejecutarlo.
• Si un comando es demasiado grande (límite máximo de 4096
caracteres) se puede dividir tecleando puntos suspensivos (…) y
pulsando la tecla Intro, luego se continua la escritura del comando
en la línea siguiente.
• Cuando se teclea el símbolo de porcentaje (%) al principio de una
línea, MATLAB considerará dicha línea como un comentario.

Ejemplo:

>> x=rand(10); %Creamos una matriz de 10 x 10 con números aleatorios entre (0


y 1)

Espacio de trabajo (Workspace)


Esta ventana contiene información sobre todas las variables que se hayan
definido en esta sesión y permite ver y modificar las mismas.
Al hacer doble clic sobre cualquier variable lanza automáticamente una
ventana de documento (Document window) que contiene el editor de
variables (Variable editor).

2
Guía de MATLAB – Para principiantes

Directorio actual (Current folder)


Esta ventana lista todos los archivos en una carpeta, la ubicación por defecto
del directorio varía con la versión del software. El directorio actual se puede
cambiar y seleccionar otro.

Historial de comandos (Command history)


La ventana de historial de comandos (Command history) registra los
comandos que se escriben en la ventana de comandos y conserva una lista
de todos ellos. Conforme ejecute cálculos cada vez más complicados
encontrará que la ventana de historia de comandos es útil.

1.3. Asignaciones
Uno de los elementos fundamentales en la programación son las variables.
Una variable se define como un objeto que puede tomar el mismo valor a lo
largo de todo el programa o bien puede ir cambiando al ejecutar diferentes
acciones.

MATLAB tiene un conjunto de variables predefinidas:

ans Contiene el valor del último comando no asignado a una variable.


pi Es el valor aproximado de π.
eps Representa la diferencia más pequeña entre dos números (2^(-
52)).
inf Representa el infinito.
i Se define como la raíz cuadrada de -1.
j Es igual a i.
NaN Es la abreviación de Not a Number. Se usa cuando MATLAB no
puede determinar un valor numérico válido.

Importante:
• Todos los nombres deben comenzar con una letra.
• Los nombres pueden tener cualquier longitud, pero sólo se usan los
primeros 63 caracteres. (Verificarlo con el comando
namelengthmax)
• Los únicos caracteres permisibles son letras, números y el guión
bajo.

3
Guía de MATLAB – Para principiantes

• MATLAB distingue entre mayúsculas y minúsculas por lo que x y X


no serán las mismas variables ni lo serán tampoco Nodos, nodos y
NODOS.
• Con el comando isvarname puede verificar si se permite el nombre
de la variable.

>> isvarname if
ans =

0
>> isvarname luis
ans =
1
• El comando iskeyword hace que MATLAB elabore una lista de
nombres reservados, es decir que no se pueden asignar como
nombres de variable.

Ejemplo:

>> A=0.5
A =
0.50

>> B=pi
B =
3.1416

1.4. Vectores y Matrices


Para crear un vector introducimos los valores deseados separados por
espacios (o comas) todo ello entre corchetes [ ]. Si lo que queremos es crear
una matriz lo hacemos de forma análoga pero separando las filas con puntos
y comas (;).

Ejemplo:

>> x = [5 7 -2 4 -6] % es un vector, los


elementos los separamos con espacios
x =
5 7 -2 4 -6

4
Guía de MATLAB – Para principiantes

>> y = [2,1,3,7] % es otro vector, los elementos


los separamos con comas
y =
2 1 3 7
>> z = [0 1 2,3 4,5] % es otro vector, da igual
separar los elementos por comas o espacios
z =
0 1 2 3 4 5
>> A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3
columnas
A =
1 2 3
4 5 6

Para acceder a los elementos individuales de un vector o matriz lo haremos


utilizando subíndices, así x(n) sería el n-ésimo elemento del vector x. Si
queremos acceder al último podemos indicarlo usando end como subíndice.
La posición absoluta del elemento en la matriz se determina desde el
elemento X11 (posición 1) hacia abajo y luego hacia la derecha siguiendo el
siguiente esquema:

Ejemplo:

>> x = [5 7 -2 4 -6];
>> x (2) % segundo elemento del vector x
ans =
7
>> x (end) % último elemento del vector x
ans =
-6

>> X=[5 7 9 8; 1 4 5 7; 3 3 2 7]
X =
5 7 9 8
1 4 5 7
3 3 2 7
>> X(3) % tercer elemento de la matriz X
ans =
3

5
Guía de MATLAB – Para principiantes

>> X(10) % décimo elemento de la matriz X

ans =
8
>> X(end) % último elemento de la matriz X
ans =
7

Para el caso de las matrices también es posible identificar un elemento


cualquiera según la siguiente sintaxis: A(fila, columna)

Ejemplo:

>> X(1,3) % fila número 1, columna número 3

ans =
9

También es posible utilizar el operador “:” para referirse a un conjunto de


elementos de una matriz o vector.

>> X(:,1) % Todas las filas, columna 1 de la matriz X.


ans =
5
1
3

>> X(3,:) % Todas las columnas, fila 3 de la matriz X.


ans =
3 3 2 7

>> X(:,:) % Todos los elementos de la matriz.


ans =
5 7 9 8
1 4 5 7
3 3 2 7

6
Guía de MATLAB – Para principiantes

1.5. Diferentes formatos para los datos


Existen diferentes formatos de salida para los datos en MATLAB. Veamos
algunos ejemplos.
>> d=1/33
d=
0.0303
>> format short, d %Formato corto, 4 cifras
decimales.
d =
0.0303
>> format long, d %Formato largo, 14 cifras
decimales.
d=
0.03030303030303
>> format short e, d %Formato corto con mantisa y
exponente.
d=
3.0303e-02
>> format long e, d %Formato largo con mantisa y
exponente.
d=
3.030303030303030e-02
>> format rat, d %Formato racional.
d=
1/33
>> format bank, d %Formato con 2 dígitos
decimales.
d =
0.03

1.6. WHO, WHOS, CLEAR


Un comando de uso frecuente es who que nos permite conocer el número y
nombre de las variables usadas a lo largo del programa o de la sesión. Su
formato es:

>> who
Your variables are:
A u vfil x
ans vcol w y

7
Guía de MATLAB – Para principiantes

Donde las variables corresponden a otra ejecución del programa.

El comando whos nos muestra, además del nombre de las variables,


información adicional de cada variable, distinguiendo si es vector o escalar.

>> whos
Name Size Bytes Class
A 3x4 96 double array
ans 4x1 32 double array
u 1x1 8 double array
vcol 4x1 32 double array
vfil 1x4 32 double array
w 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array

Debemos tener en cuenta que MATLAB en cada sesión mantiene en


memoria todas las variables utilizadas hasta ese momento y que únicamente
el comando clear hace que elimine el valor de todas las variables.

>> clear

Si ahora tecleamos who no se produce ninguna salida.

8
Guía de MATLAB – Para principiantes

2. GRAFICAS 2D EN MATLAB

2.1. El comando plot


El usuario de MATLAB puede dibujar fácilmente un conjunto de pares de
puntos, y una forma de hacerlo es mediante el comando plot.

>> plot(argumentos)

Ejemplos:

Dibujemos el vector de ordenadas y el de abscisas:

>> x=[-4 -2 0 1 3 5];


>> y=[16 4 0 1 9 25];
>> plot(x,y);

9
Guía de MATLAB – Para principiantes

Dibujemos un vector de números complejos:

>> z=[1 2+i 3 2-i 3-2*i];


>> plot(z);

Dibujemos una matriz:

>> A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 -0.5; 5 25 0.5];


>> plot(A);

10
Guía de MATLAB – Para principiantes

Si en el ejemplo anterior elegimos las ordenadas obtenemos:

>> x=[0 0.1 0.2 0.3 0.4];


>> A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 -0.5; 5 25 0.5];
>> plot(x,A);

También podemos dibujar diferentes funciones en el mismo gráfico.

>> x=0:0.1:2;
>> A=[sin(pi*x); 0.5+0.5*x];
>> plot(x,A);

11
Guía de MATLAB – Para principiantes

Podemos intercambiar los ejes sin más que escribir

>> plot(A,x)

Opciones del comando plot


Sintaxis Descripción
plot(x,y, LineSpec) Dibuja la grafica de abcisas x y
ordenadas y con las opciones de
estilo dadas por LineSpec.
plot(x1,y1, LineSpec1, x2,y2, Dibuja la gráfica de abcisas x1 y
LineSpec2,...) ordenadas y1 con las opciones de
estilo dadas por LineSpec1, la
gráfica de abcisas x2 y ordenadas
y2 con las opciones de estilo dadas
por LineSpec2 y así con el resto de
ternas. Si se omiten las opciones
de estilo MATLAB escoge el color y
estilo para cada grafico.

Así por ejemplo, LineSpec=’ys-’ dibuja una línea amarilla, sólida y con
cuadrados como marcadores, exactamente igual que LineSpec=’s-y’ o
LineSpec=’sy-’ aunque siempre es mejor ser homogéneos en cada uno de los
usos de estos parámetros.

12
Guía de MATLAB – Para principiantes

Marcador Estilo de línea Color


. punto - solida y amarillo
* estrella -- discontınua g verde
x cruz -. punto-raya m magenta
o cırculo : punteada b azul
+ más c cyan
s cuadrado w blanco
d rombo r rojo
p pentágono k negro
h hexágono
v triangulo abajo
< triangulo izquierda
> triangulo derecha
^ triangulo arriba

Ejemplos:

>> x=-pi:0.05:pi;
>> plot(x, sin(x).*cos(x),'o');

n=50; %Asignamos valores a las variables


a=0;
b=3;
x=linspace(a,b,n); %Construimos el vector x
e1=exp(-x.^2); %y los vectores de abcisas
e2=(x.^2).*exp(-x.^2);

13
Guía de MATLAB – Para principiantes

e3=x.*exp(-x.^2);
e4=exp(-x);
plot(x,e1,'+',x,e2,'*',x,e3,'o',x,e4,'x'); %Dibujamos
las graficas

Además podemos colocar etiquetas o manipular la gráfica:

>> xlabel('texto') %etiqueta sobre el eje X de la


gráfica actual
>> ylabel('texto') %etiqueta sobre el eje Y de la
gráfica actual
>> title('texto') %título en la cabecera de la
gráfica actual
>> text(x,y, 'texto') %texto en el lugar especificado
por las coordenadas
>> gtext('texto') %texto, el lugar lo indicamos
después con el ratón
>> grid %dibujar una rejilla
>> axis( [xmin xmax ymin ymax] ) %fija valores
máximo y mínimo de los ejes
>> axis equal %fija que la escala en los ejes sea
igual
>> axis square %fija que la gráfica sea un cuadrado
>> axis normal %desactiva axis equal y axis square
>> hold on %abre una ventana de gráfico
>> hold off %borra lo que hay en la ventana de
gráfico

14
Guía de MATLAB – Para principiantes

También podemos cambiar a apariencia de la gráfica con el último botón de


la barra de herramientas y se abrirán unos cuadros en los laterales que nos
permitirán ir haciendo los cambios deseados como darle nombre a los ejes.

2.2. El comando subplot


Una ventana gráfica se puede dividir en m particiones horizontales y en n
verticales, de modo que cada subventana tiene sus propios ejes, y para hacer
esto vamos a usar subplot (m,n,p) donde p indica la subdivisión que se
convierte en activa.

Ejemplo:

>> x = 1:360; y1 = sind (x); y2 = cosd(x); y3 = exp (x);


y4 = exp (-x);
>> subplot (2,2,1), plot(x,y1), title ('seno')
>> subplot (2,2,2), plot(x,y2), title ('coseno')
>> subplot (2,2,3), plot (x,y3), title ('exponencial')
>> subplot (2,2,4), plot (x,y4), title ('-exponencial')

15
Guía de MATLAB – Para principiantes

Para volver al modo por defecto basta escribir:

>> subplot (1,1,1)

2.3. Otras gráficas

Comando pie (Diagrama de sectores)


Resultan útiles para representar datos de tipo cualitativo, en los que tenemos
varias opciones, el diagrama de sectores permite compararlas en un circulo
con sectores cuyo ángulo es directamente proporcional al porcentaje de cada
opción.

Ejemplo: Los resultados de las elecciones generales del 10 de abril del 2016
al Congreso fueron los siguientes:

16
Guía de MATLAB – Para principiantes

Partido político Número de Congresistas


Fuerza Popular 73
Peruanos por el Kambio 18
El Frente Amplio 20
APP 9
Alianza Popular 5
Acción Popular 5
Total 130

Para dibujar un diagrama de sectores de los resultados de las elecciones,


procedemos como sigue. Introducimos los datos en un vector

>> x=[73 18 20 9 5 5];


>> pie3(x)
>> legend('FP','PPK','FA','APP','Alianza P.','Acción P.')

Con el comando pie3 se obtiene también un diagrama de sectores, pero en


versión tridimensional.

Ejemplo:

>> pie3(x, [1 1 1 0 0 0])


>> legend('FP','PPK','FA','APP','Alianza P.','Acción P.')

17
Guía de MATLAB – Para principiantes

Tanto para el comando pie, como para el comando pie3 existe la posibilidad
de separar uno o más sectores para destacarlos con respecto de los demás.

Ejemplo:

>> pie(x, [1 1 1 0 0 0])


>> legend('FP','PPK','FA','APP','Alianza P.','Acción P.')

18
Guía de MATLAB – Para principiantes

Comando bar y barh (Diagrama de barras)


Existen varias posibilidades para representar diagramas de barras.

Ejemplo:

Supongamos que queremos representar los siguientes datos en un diagrama


de barras:

>>x=[10 2 3 5 18 20 15 ];

Y ahora usamos los comandos bar, barh, para generar los gráficos. (Usando
el comando subplot podemos conseguir que aparezcan todos en la misma
figura.)

>> subplot(1,2,1),bar(x),title('Barras Verticales')


>> subplot(1,2,2),barh(x),title('Barras Horizontales')

Con los comandos bar3 y bar3h se obtienen sus respectivas versiones


tridimensionales.

>> subplot(1,2,1),bar3(x),title('Barras Verticales 3D')


>> subplot(1,2,2),bar3h(x),title('Barras Horizontales
3D')

19
Guía de MATLAB – Para principiantes

Comando area
Similar al comando plot, salvo que rellena las ordenadas de 0 a y.

Ejemplo:

>> x=[1989:2018];
y=rand(1,30)*1000;
area(x,y);
axis([1989 2018 0 1000])

20
Guía de MATLAB – Para principiantes

Comando stairs
Función análoga a bar sin líneas internas.

Ejemplo:

>> x=[1989:2018];
y=rand(1,30)*1000;
stairs(x,y);
axis([1989 2018 0 1000])

Comando stem
Representa una gráfica de tallos

Ejemplo:

>> x=[1989:2018];
y=rand(1,30)*1000;
stem(x,y);
axis([1989 2018 0 1000])

21
Guía de MATLAB – Para principiantes

Comando errorbar
Representa sobre una gráfica –mediante barras– valores de errores

Ejemplo:

>> x=[1989:2018];
y=rand(1,30)*1000;
errorbar(x,y);
axis([0 31 1000 3000])

22
Guía de MATLAB – Para principiantes

Comando compass
Dibuja los elementos de un vector complejo como un conjunto de vectores
partiendo de un origen común

Ejemplo:

>> Z=[2+3i,3-2i,5.6+4i];
compass(Z);

Comando feather
Dibuja los elementos de un vector complejo como un conjunto de vectores
partiendo de orígenes uniformemente espaciados sobre el eje de abscisas

Ejemplo:

>> Z=[2+3i,3-2i,5.6+4i];
feather(Z);

23
Guía de MATLAB – Para principiantes

Comando comet
Crea un gráfico animado en el que un círculo (cometa) recorre los puntos de
datos en la pantalla.

Ejemplo:

>> t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);

24
Guía de MATLAB – Para principiantes

3. OPERACIONES MATEMÁTICAS
3.1. Aritmética elemental
Comenzaremos viendo con varios ejemplos que las operaciones aritméticas
habituales se realizan del modo esperado con los operadores.

Suma: +
Resta: -
Multiplicación: *
División: /
Potencia: ^

Ejemplos:

>> 1+2 %Suma de dos enteros.


ans =
3
>> 2.45*3.1415 %Producto de números reales.
ans =
7.6967
>> (3+2^3*i)+(-1+5*i) %Suma de complejos.
ans =
2.0000+13.0000i

Si no queremos que aparezca por pantalla el resultado de una operación


tendremos que poner al final de la línea punto y coma ”;”.

Vectores y Matrices
Comencemos con algunos ejemplos elementales de asignaciones y alguna
de las operaciones que se pueden realizar.

>> a=2 %Asignación del valor 2 a la variable


a.
a=
2
>> b=1:1:10 %Asignamos a b el vector de datos
[1,2,3,...,10]
b=
1 2 3 4 5 6 7 8 9 10

25
Guía de MATLAB – Para principiantes

>> a+b %Sumamos un escalar y un vector.

ans=
3 4 5 6 7 8 9 10 11 12
>> a*b %Producto de un vector y un escalar.
ans=
2 4 6 8 10 12 14 16 18 20

Si sumamos vectores de tamaño diferente tenemos lo siguiente.

>> c=1:5:25 %Declaramos el vector c.


c=
1 6 11 16 21
>> b+c %Sumamos los vectores b y c.
??? Error using ==> +
Matrix dimensions must be agree

Podemos multiplicar vectores, bien como producto escalar de ellos o bien


componente a componente.

>> b=0:2:20 %Declaramos el vector b.


b=
0 2 4 6 8 10 12 14 16 18 20
>> c=0:1:10 %Declaramos el vector c.
c=
0 1 2 3 4 5 6 7 8 9 10
>> b.*c % Producto de dos vectores componente
a componente.
ans=
0 2 8 18 ...200
>> b’*c %Matriz resultado de multiplicar b
traspuesto por c (ver pantalla)
>> b*c’ %Producto de b por c traspuesto
(producto interior)
ans=
770

No sólo se pueden sumar vectores o multiplicar por una constante si no que


se puede calcular el logaritmo de un vector o el seno de un vector, etc.
obteniendo el logaritmo o el seno de cada una de sus componentes.

>> b=1:10; %Declaramos el vector b.

26
Guía de MATLAB – Para principiantes

>> log(b) %Logartimo del vector b.


ans=
Columns 1 through 7
0 0.6931 ...1.9459
Columns 8 through 10
2.0794 2.1972 2.3026
>> sin(b) %Seno del vector b.
ans=
Columns 1 through 7
0.8415 0.9093 ...0.6570
Columns 8 through 10
0.98954 0.4121 -0.5440

>> c=1:1:5
c=
1 2 3 4 5
>> 2.^c %2 elevado a las potencias que
determina c.
ans=
2 4 8 16 32
>> c.^ 2 %Las componentes de c elevadas
al cuadrado.
ans=
1 4 9 16 25

Un punto delante de los operadores .*, .^ y ./ indica que las operaciones se


realizan componente a componente en los vectores o las matrices.

3.2. Funciones matemáticas comunes


APROXIMACIONES
Función ¿Qué hace? Ejemplo
x = 5.92
ceil (x) redondea hacia infinito 6
fix (x) redondea hacia cero 5
floor (x) redondea hacia menos 5
infinito
round (x) redondea hacia el entero más 6
próximo

27
Guía de MATLAB – Para principiantes

Ejemplos:

>> x=ceil(pi)
x =
4
>> round ( [19.54646 13.656 -2.1565 0.78] )
ans =
20 14 -2 1
>> x = round(pi,3) %Aproxima a 3 cifras decimales
X =
3.1420

TRIGONOMETRÍA

Función Qué hace?


... (x) función trigonométrica con el ángulo expresado en radianes
sin (x) seno (radianes)
cos (x) coseno
tan (x) tangente
csc (x) cosecante
sec (x) secante
cot (x) cotangente
...d (x) función trigonométrica con el ángulo expresado en grados

sind (x) seno (grados)


... ...
...h (x) función trigonométrica hiperbólica con el ángulo expresado
en radianes
sinh (x) seno hiperbólico (radianes)
... ...
a... (x) inversa de la función trigonométrica con el resultado
expresado en radianes
asin (x) arco seno (radianes)
... ...
a...d (x) inversa de la función trigonométrica con el resultado
expresado en grados
asind (x) arco seno (grados)
... ...
a...h (x) inversa de la función trigonométrica hiperbólica con el
resultado expresado en radianes
asinh (x) arco seno hiperbólico (radianes)
... ...

28
Guía de MATLAB – Para principiantes

Ejemplos:

>> sin(pi/2) %Seno de pi/2 radianes


ans =
1

>> sind(-90) %Seno de 90 grados centesimales


ans =
-1

>> cosd(60) %Coseno de 60 grados


centesimales
ans =
0.5000

>> asind(1) %Arcoseno de 1 en grados


centesimales
ans =
90

OTRAS FUNCIONES

Función Que hace?


abs (x) valor absoluto o magnitud de un número complejo
sign (x) signo del argumento si x es un valor real (-1 si es
negativo, 0 si es cero, 1 si es positivo)
exp (x) exponencial
gcd (m,n) máximo común divisor
lcm (m,n) mínimo común múltiplo
log (x) logaritmo neperiano o natural
log2 (x) logaritmo en base 2
log10 (x) logaritmo decimal
mod(x,y) módulo después de la división
rem (x,y) resto de la división entera
sqrt (x) raíz cuadrada
nthroot (x,n) raíz n-ésima de x
(x e y cualquier escalar, m y n enteros)

29
Guía de MATLAB – Para principiantes

Ejemplos:

>> abs (-7) % valor absoluto de -7


ans =
7
>> sign (10) % signo del número 10
ans =
1
>> gcd (9,12) % máximo común divisor entre 9 y 12
ans =
3
>> lcm (10,25) % mínimo común múltiplo
ans =
50
>> mod (-12,5) % módulo de la división de -12/5
ans =
3

>> rem (12,5) % resto de la división de 12/5


ans =
2
>> nthroot (8,3) % raíz cúbica de 8
ans =
2

3.3. Ecuaciones
El comando solve, resuelve una ecuación o un sistema de ecuaciones. Por
ejemplo, para calcular las raíces de la ecuación

𝑥 1
𝑥2 + − =0
6 3
>> syms x; %Declaramos variable simbólica
>> solve(x^2+x/6-1/3)
ans =
1/2
-2/3
Vamos a resolver la conocida ecuación de segundo grado

𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0

30
Guía de MATLAB – Para principiantes

−𝑏 ± √𝑏 2 − 4𝑎𝑐
𝑥1,2 =
2𝑎
>> syms a b c x; %Declaramos variables simbólicas
>> eq=a*x^2+b*x+c;
>> solve(eq,x) %Resolvemos respecto a la
variable simbólica x
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

Resolver el sistema de dos ecuaciones con dos incógnitas

3𝑥 + 2𝑦 = −1
{
𝑥−𝑦 =2

>> syms x y; %Declaramos variables simbólicas


>> eq1=3*x+2*y+1;
>> eq2=x-y-2;
>> [x1 y1]=solve(eq1,eq2,x,y)
x1 =
3/5
y1 =
-7/5

3.4. Sistema de ecuaciones lineales


Un sistema de ecuaciones lineales, también conocido como sistema lineal de
ecuaciones o simplemente sistema lineal, es un conjunto de ecuaciones
lineales (es decir, un sistema de ecuaciones en donde cada ecuación es de
primer grado).
Se presentan tres maneras de resolver sistemas de ecuaciones con
MATLAB:
• Método de la matriz inversa (sistema de ecuaciones lineales).
• Método de la división matricial izquierda (sistema de ecuaciones
lineales).
• Utilizando el comando rref (sistema de ecuaciones lineales).
• Utilizando el comando solve (sistema de ecuaciones lineales y no
lineales).

31
Guía de MATLAB – Para principiantes

Ejemplos:

2𝑥 + 4𝑦 + 6𝑧 = 18
4𝑥 + 5𝑦 + 6𝑧 = 24
3𝑥 + 𝑦 − 2𝑧 = 4

>> A = [2,4,6;4,5,6;3,1,-2];
>> B = [18;24;4];
>> C = det(A)

C =
6 % Determinante distinto de 0, solución única
>> sol1 = inv(A)*B % Método de la matriz inversa
sol1 =
4.0000
-2.0000
3.0000

>> sol2=A\B % Método de la división matricial izquierda


sol2 =
4.0000
-2.0000
3.0000

>> AB=[A B] % Escribimos la matriz ampliada


>> rref(ab) % Eliminación Gauss-Jordan

ans =
1 0 0 4
0 1 0 -2
0 0 1 3

>> syms a b c %Declaramos variables simbólicas


>> a1=2*a+4*b+6*c==18;
>> a2=4*a+5*b+6*c==24;
>> a3=3*a+b-2*c==4;
>> [x1,y1,z1]=solve(a1,a2,a3) %Mediante comando solve
x1 =
4
y1 =
-2
z1 =
3

32
Guía de MATLAB – Para principiantes

3.5. Series
La función symsum(f,a,b) suma la expresión f a medida que la variable
simbólica varía de a a b
5

𝑠 = ∑ 𝑘 2 = 12 + 22 + 32 + 42 + 52 = 55
𝑘=1
>> syms k; %Declaramos variable simbólica
>> symsum(k^2,1,5) %Sumatoria de 1 a 5
ans =
55
𝑁
𝑁(𝑁 + 1)
∑𝑘 =
2
𝑘=0
>> syms k N; %Declaramos variables simbólicas
>> symsum(k,0,N) %Sumatoria de 0 a N
ans =
(N*(N + 1))/2
𝑁
𝑁(𝑁 + 1)(2𝑁 + 1)
∑ 𝑘2 =
6
𝑘=0
>> syms k N; %Declaramos variables simbólicas
>> symsum(k^2,0,N) %Sumatoria de 0 a N
ans =
(N*(2*N + 1)*(N + 1))/6

𝑥𝑘
= 𝑒𝑥 ∑
𝑘!
𝑘=0
>> syms x k %Declaramos variables simbólicas
>> symsum(x^k/sym('k!'),k,0,inf) %Sumatoria de k desde 0
a inf
ans =
exp(x)

Dado que hay dos variables simbólicas x y k, especificamos en el segundo


parámetro de la función sysmsum que la suma se refiere a k

33
Guía de MATLAB – Para principiantes

3.6. Límites
𝑥 2 + 2𝑥 − 1
lim ( )=1
𝑥→1 𝑥2 + 1

>> syms x a; %Declaramos variables simbólicas


>> y=(x^2+2*x-1)/(x^2+1);
>> limit(y,x,1) %Calculamos limite cuando x
tiende a 1
ans =
1

a x
lim (1 + )
x→∞ x

inf representa en MATLAB el infinito

>> syms x a;
>> limit((1+a/x)^x,x,inf) %Calculamos limite
cuando x tiende a infinito
ans =
exp(a)

3/x2
lim(cos(2x))
x→0
>> syms x;
>> y=cos(2*x)^(3/x^2);
>> limit(y,x,0)
ans =
1/exp(6)

La derivada de una función f(x) es el límite

𝑓(𝑥 + ℎ) − 𝑓(𝑥)
𝑓 ′(𝑥) = lim
ℎ→0 ℎ

La derivada de y=sin(x) es y'=cos(x)


>> syms x h;
>> limit((sin(x+h)-sin(x))/h,h,0)
ans =
cos(x)

34
Guía de MATLAB – Para principiantes

De forma alternativa, podemos calcular las derivadas definiendo la función


f(x) como función anónima y aplicando la definición de derivada.

>> syms x h;
>> f=@(x) sin(x) %función anónima
>> limit((f(x+h)-f(x))/h,h,0)
ans =
cos(x)

3.7. Derivada de una función


La función diff calcula la derivada de una función respecto a una variable x.
Por defecto, calcula la derivada primera, pero también puede calcular la
derivada segunda, tercera, etc., indicándoselo en su segundo argumento.

>> syms x;
>> y=(sin(x))^2;
>> yp=diff(y) %derivada con respecto a x
yp =2*cos(x)*sin(x)
>> ypp=diff(yp) %derivada de la derivada
ypp =
2*cos(x)^2 - 2*sin(x)^2
>> diff(y,2) %segunda
derivada (derivada de la derivada)
ans =
2*cos(x)^2 - 2*sin(x)^2

Derivadas parciales (respecto de una variable)

>> syms x y;
>> diff(x*sin(x*y),x) %derivada con respecto a x
ans =
sin(x*y) + x*y*cos(x*y)
>> diff(x*sin(x*y),y) %derivada con respecto a y
ans =
x^2*cos(x*y)

3.8. Integral de una función


El comando int(f,x,a,b) calcula la integral de la expresión f, respecto de la
variable x, en el intervalo [a,b] donde a y b pueden ser cantidades numéricas
o variables simbólicas.

35
Guía de MATLAB – Para principiantes

Integrales indefinidas
Si no ponemos límites a la integral, obtenemos la integral indefinida, la
función cuya derivada es el integrando

𝟏 − 𝒄𝒐𝒔(𝟐𝒙) 𝟏 𝒔𝒊𝒏(𝟐𝒙)
∫ 𝒔𝒊𝒏𝟐 (𝒙)𝒅𝒙 = ∫ 𝒅𝒙 = 𝒙 − +𝒄
𝟐 𝟐 𝟒

>> syms x; %Declaramos variable simbólica


>> y=sin(x)^2;
>> z=int(y)
z =
x/2 - sin(2*x)/4
>> y=diff(z)
y =
1/2 - cos(2*x)/2
>> simplify(y)
ans =
sin(x)^2

Calculamos la derivada con diff, simplificamos la expresión obtenida con


simplify y obtenemos el integrando.

Integales definidas
Para calcular la integral

𝜋 𝜋 𝜋
1 − 𝑐𝑜𝑠(2𝑥) 1 𝑠𝑖𝑛(2𝑥) 𝜋
∫ 𝑠𝑖𝑛2 (𝑥)𝑑𝑥 = ∫ 𝑑𝑥 = 𝑥 − | =
0 0 2 2 4 0
2

>> syms x; %Declaramos variable simbólica


>> y=sin(x)^2;
>> int(y,0,pi)
ans =
pi/2

En este ejemplo,
+∞
∫ 𝑒𝑥𝑝(−𝑎𝑥 2 )𝑑𝑥
−∞

>> syms x a; %Declaramos variables simbólicas


>> y=exp(-a*x^2);
>> int(y,x,-inf,inf)

36
Guía de MATLAB – Para principiantes

ans =

piecewise([a < 0, Inf], [0 <= real(a) | angle(a) in


Dom::Interval([-pi/2], [pi/2]) & a ~= 0,
pi^(1/2)/a^(1/2)], [real(a) < 0 & ~angle(a) in
Dom::Interval([-pi/2], [pi/2]) & ~a < 0, int(exp(-x^2*a),
x, -Inf, Inf)])

Nos devuelve una expresión condicional cuya sintaxis es la siguiente:


pw = piecewise(cond1,val1,cond2,val2,...) cuyo valor es val1 cuando la
condición cond1 es cierto, es val2 cuando cond2 es cierto, y así
sucesivamente.
pw = piecewise(cond1,val1,cond2,val2,...,otherwiseVal) otherwiseVal si
ninguna condición es verdadera.

Si declaramos el parámetro a positivo entonces:

>> clear
>> syms x; %Declaramos variable simbólica
>> syms a positive; %Declaramos variable positiva

>> y=exp(-a*x^2);
>> int(y,x,-inf,inf)
ans =
pi^(1/2)/a^(1/2)

3.9. Ecuaciones diferenciales


Resolución exacta de ecuaciones diferenciales ordinarias
Para resolver de forma exacta una o varias ecuaciones diferenciales,
MATLAB dispone de la orden dsolve. Por defecto, la variable independiente
es t, pero se puede usar cualquier otra variable si se incluye como último
argumento:

dsolve(‘ec1’, …,’ecn’) resuelve el sistema diferencial de


ecuaciones y condiciones iniciales (ec1,
…., ecn)
dsolve(‘ec1’,…,’ecn’,’var’) resuelve el sistema diferencial de
ecuaciones y condiciones iniciales (ec1,
…., ecn) y usa var como variable
independiente

37
Guía de MATLAB – Para principiantes

La letra D se utiliza para representar la derivación con respecto a la variable


independiente, es decir, u’ se escribe Du; las derivadas orden superior u’’,
u’’’,… se escriben D2u, D3u,…

Ejemplo:
1 1
𝑢′ = 𝑢, 𝑢(0) =
2 4
>> u = dsolve('Du= u/2','u(0)= 1/4')
u =
exp(t/2)/4

Es posible obtener la solución general de una ecuación diferencial:

>> u = dsolve('Du=u/2')
u =
C2*exp(t/2)

Esto significa que la solución de la ecuación diferencial 𝑢′ = 𝑢/2 es.

𝑢(𝑡) = 𝐶1 𝑒 𝑡⁄2 , (𝐶1 ∈ 𝑅)


𝑢′ = 2𝑡 + 𝑢, 𝑢(1) = 0.5

>> u = dsolve('Du= 2*t+u','u(1)= 0.5')


u =
(9*exp(-1)*exp(t))/2 - 2*t – 2

El operador simbólico dsolve no siempre puede encontrar una solución de


forma cerrada (algo probable puesto que sólo clases particulares de EDOs
pueden ser resueltas en forma simbólica cerrada).
Y cuando no podemos resolver la EDO de manera simbólica, debemos
cambiar a un solucionador numérico.

Comando ode45
Su sintaxis es la siguiente
[t,x]=ode45(odefun,tspan,x0, options, params)

• x es una matriz donde cada columna corresponde a las variables


dependientes y t es el vector tiempo.
• odefun es el nombre de la función,
• tspan especifica el intervalo de tiempo, un vector de dos números
tspan=[ti,tf], tiempo inicial y final. Para obtener valores de las

38
Guía de MATLAB – Para principiantes

variables dependientes en instantes concretos t0, t1, t2, ... tn. se


escribe tspan=[t0,t1....tn];
• x0 es un vector que contiene los valores iniciales.
• options es una estructura que se crea con la función odeset.
• params son parámetros que queremos pasar a la función odefun

Ejemplo:
Para el intervalo de [0,5], calcular:
𝑢′ = 2𝑡 𝑢(0) = 0

>> tspan = [0 5]; %Definimos los limites


>> u0 = 0; %Valor de u con t=0
>> [t,u] = ode45(@(t,u) 2*t, tspan, u0);
>> plot(t,u,'-o') %Graficamos el resultado

Sistema de ecuaciones diferenciales de primer orden

Ejemplo:
Resolver el sistema de ecuaciones diferenciales:

𝑑𝑥
= −𝑎𝑥
𝑑𝑡
𝑑𝑦
= 𝑎𝑥 − 𝑏𝑦
𝑑𝑧𝑡

39
Guía de MATLAB – Para principiantes

a=0.5;
b=0.7;
%condiciones iniciales en el vector x0
x0=zeros(1,2);
x0(1)=0;
x0(2)=1;
tf=5 %tiempo final
tspan=[0 tf];
fg=@(t,x) [-a*x(1);a*x(1)-b*x(2)];
[t,x]=ode45(fg,tspan,x0);
plot(t,x,'-o')

Ejemplo:

Resolver el sistema de ecuaciones diferenciales:

𝑑𝑦
= −0.2(1 − 0.23𝑥)/𝑦
𝑑𝑧
𝑑𝑥
= 1.5(1 − 𝑥)𝑦/(1 − 0.2𝑥)
𝑑𝑧
Para valores de:
𝑥(0) = 0 , 𝑦(0) = 1.0 , 𝑧(0) = 0 , 𝑧(𝑓) = 3.0
Podemos obtener el resultado de manera directa con el comando ode45:

>> x0=zeros(1,2);
>> x0(1)=0;

40
Guía de MATLAB – Para principiantes

>> x0(2)=1;
>> tspan=[0,3];
>> fg=@(t,x) [1.5*(1-x(1))*x(2)/(1-0.2*x(1));-0.2*(1-
0.23*x(1))/x(2)];
>> [t,x]=ode45(fg,tspan,x0);
>> plot(t,x,'-o')

41
Guía de MATLAB – Para principiantes

4. OPERACIONES CON POLINOMIOS


4.1. Polinomios
Un polinomio de grado n de coeficientes a1,a2...,an,an+1 es la expresión
𝑎1 𝑥 𝑛 + 𝑎2 𝑥 𝑛−1 + ⋯ + 𝑎𝑛 𝑥 + 𝑎𝑛+1

en MATLAB se representa por el vector fila p=[a1,a2...,an,an+1]


El polinomio p = x 3 − 2x 2 + x − 2 se representa por el vector p=[1 -2 1 -2]
Los polinomios se pueden representar de forma simbólica mediante la
función poly2sym.

>> p=[1 -2 1 -2]; %Vector formado por sus


coeficientes
>> poly2sym(p)
ans =
x^3 - 2*x^2 + x - 2

A su vez un polinomio en forma simbólica se puede convertir en el vector


formado por sus coeficientes mediante sym2poly

>> syms x;
>> sym2poly(x^3-2*x-4) %Polinomio en forma simbólica
ans =
1 0 -2 -4

4.2. Valor de un polinomio


Calculamos el valor de polinomio cuando se conoce el valor la variable x.
Sea 𝑝 = 𝑥 5 − 3.5𝑥 4 + 2.75𝑥 3 + 2.125𝑥 2 − 3.875𝑥 + 1.25
Cuando se expresa un polinomio de forma simbólica se utiliza la función subs

>> syms x;
>> p=x^5-3.5*x^4+2.75*x^3+2.125*x^2-3.875*x+1.25;
>> subs(p,x,1.5) %Valor de x de 1.5
ans =
-0.6250

La función polyval nos proporciona este valor cuando se expresa el polinomio


en forma de vector formado por los coeficientes.

42
Guía de MATLAB – Para principiantes

>> p=[1 -3.5 2.75 2.125 -3.875 1.25];


>> x=1.5; %Valor de x de 1.5
>> polyval(p,x)
ans =
-0.6250
>> x=0:0.5:2; %Valor de x de 0 a 2 con un paso
de 0.5
>> polyval(p,x)
ans =
1.2500 0 -0.2500 -0.6250 0

4.3. Ajuste a un polinomio


La función polyfit devuelve los coeficientes para un polinomio de grado n, que
es el mejor ajuste para una serie de datos ingresados. Los coeficientes están
en potencias descendentes y la longitud es n+1.

>> p = polyfit(x, y, n)

Ejemplo:

>> x = linspace (0,4 * pi, 10); %Genera un vector de 10


valores desde 0 hasta 4pi
>> y = sin (x);
>> p = polyfit (x, y, 7);
>> x1 = linspace(0,4*pi); %Genera un vector de 100
valores desde 0 hasta 4pi
>> y1 = polyval(p,x1); %Evalúa y1 en función de
los valores de x1
>> figure
>> plot(x,y, 'o' )
>> hold on
>> plot(x1,y1)
>> hold off

43
Guía de MATLAB – Para principiantes

4.4. Suma de polinomios


Queremos sumar los polinomios p1=x3-2x-4 y p2=x2+3x+4
De forma simbólica

>> syms x;
>> p1=x^3-2*x-4;
>> p2=x^2+3*x+4;
>> p1+p2
ans =
x^3 + x^2 + x

Para sumar dos polinomios en forma de vectores, los vectores tiene que
tener las mismas dimensiones

>> p1=[1 0 -2 -4];


>> p2=[2 3 4];
>> p1+p2
??? Error using ==> plus
Matrix dimensions must agree.
>> p2=[0 2 3 4];
>> p1+p2
ans =
1 2 1 0

44
Guía de MATLAB – Para principiantes

4.5. Producto de dos polinomios


Queremos multiplicar los polinomios p1=x3-2x-4 y p2=x2+3x+4
De forma simbólica

>> syms x;
>> p1=x^3-2*x-4;
>> p2=x^2+3*x+4;
>> p=p1*p2
p =
-(x^2 + 3*x + 4)*(- x^3 + 2*x + 4)
>> expand(p)
ans =
x^5 + 3*x^4 + 2*x^3 - 10*x^2 - 20*x - 16

Producto de dos polinomios mediante la función conv

>> p1=[1 0 -2 -4];


>> p2=[1 3 4];
>> p=conv(p1,p2)
p =
1 3 2 -10 -20 -16

4.6. Cociente
𝑥 3 + 5𝑥 2 + 11𝑥 + 13 𝑥+1
2
= (𝑥 + 3) + 2
𝑥 + 2𝑥 + 4 𝑥 + 2𝑥 + 4
De forma simbólica

>> syms x;
>> p1=x^3+5*x^2+11*x+13;
>> p2=x^2+2*x+4;
>> p=p1/p2
p =
(x^3 + 5*x^2 + 11*x + 13)/(x^2 + 2*x + 4)
>> simplify(p)
ans =
x + (x + 1)/(x^2 + 2*x + 4) + 3

La función deconv nos proporciona el cociente y el resto de la división entre


dos polinomios.

>> p1=[1 5 11 13];

45
Guía de MATLAB – Para principiantes

>> p2=[1 2 4];


>> [q r]=deconv(p1,p2)
q = 1 3 %Coeficientes del polinomio x+3
r = 0 0 1 1 %Coeficientes
del resto x+1

4.7. Derivada
La regla de derivación de cada término de un polinomio es
𝑑
𝑎𝑥 𝑛 = 𝑛𝑎𝑛−1
𝑑𝑥

Mediante la función diff(p,n) calculamos la derivada n del polinomio p de


forma simbólica

>> syms x;
>> p=x^3+4*x^2-3*x-2;
>> diff(p) %Primera derivada del polinomio
p
ans =
3*x^2 + 8*x - 3
>> diff(p,2) %Segunda derivada del polinomio
p
ans =
6*x + 8

La función polyder calcula la derivada de un polinomio expresado en forma


de vector formado por los coeficientes.

>> p=[1 4 -3 -2];


>> polyder(p)
ans =
3 8 -3

4.8. Integral
La integral de cada uno de los términos del polinomio se calcula mediante la
fórmula

𝑥 𝑛+1
∫ 𝑎𝑥 𝑛 𝑑𝑥 = 𝑎
𝑛+1

46
Guía de MATLAB – Para principiantes

La función int calcula la integral de forma analítica, suponiendo que la


constante de integración vale 0

>> syms x; %Declaramos variable simbólica


>> p=4*x^3+4*x^2-2*x-2;
>> int(p)
ans =
x^4 + (4*x^3)/3 - x^2 - 2*x

La función polyint calcula la integral cuando se expresa un polinomio como


vector formado por los coeficientes

>> p=[4 4 -2 2];


>> polyint(p)
ans =
1.0000 1.3333 -1.0000 2.0000 0

4.9. Raíces de un polinomios


Cuando se expresa un polinomio de forma simbólica se utiliza la función
solve

>> syms x; %Declaramos variable simbólica


>> p=x^5-3.5*x^4+2.75*x^3+2.125*x^2-3.875*x+1.25;
>> solve(p)
ans =
2
-1
1/2
i/2 + 1
1 - i/2

Cuando se expresa un polinomio como vector formado por los coeficientes,


se emplea la función roots.

>> p=[1 -3.5 2.75 2.125 -3.875 1.25];


>> roots(p)
ans =
2.0000
-1.0000
1.0000 + 0.5000i
1.0000 - 0.5000i

47
Guía de MATLAB – Para principiantes

0.5000

Conocidas las raíces del polinomio podemos calcular el vector que guarda los
coeficientes mediante poly

>> r=[2 -1 1+0.5i 1-0.5i 0.5]; %raíces del polinomio


>> poly(r)
ans = 1.0000 -3.5000 2.7500 2.1250 -3.8750
1.2500

Obtenemos el polinomio p a partir de sus raíces

4.10. Factorización
La función factor convierte un polinomio expresado en forma simbólica en
factores

>> syms x; %Declaramos variable


simbólica
>> p=x^3-6*x^2+11*x-6;
>> factor(p)
ans =
(x - 3)*(x - 1)*(x - 2)

4.11. Expansión
La función expand realiza operaciones con polinomios, por ejemplo, devuelve
el polinomio p a partir de sus factores

>> syms x; %Declaramos variable


simbólica
>> p=(x - 3)*(x - 1)*(x - 2);
>> expand(p)
ans =
x^3 - 6*x^2 + 11*x - 6
>> p=(x-1)^3+2*(x+3)^2+x^2-2*x-2;
>> expand(p)
ans =
x^3 + 13*x + 15

48
Guía de MATLAB – Para principiantes

5. GRAFICAS 3D EN MATLAB
MATLAB tiene posibilidades de realizar varios tipos de gráficos 3D, muchas
de ellas son simples generalizaciones de funciones disponibles para
graficación en dos dimensiones.

5.1. Comando plot3


Crea una gráfica lineal tridimensional. Es similar a la función plot con la
salvedad que plot3 acepta datos en tres dimensiones. Es decir el usuario
debe proporcionar tres vectores: x, y y z.

Ejemplo:

>> x = linspace(0, 10*pi, 1000) ;


y = cos(x);
z = sin(x);
plot3(x,y,z,'r','linewidth',3);
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

49
Guía de MATLAB – Para principiantes

5.2. Comando comet3


Genera una versión animada de plot3, genera una animación a partir de los
puntos a graficar. Es similar a la función comet para dos dimensiones

Ejemplo:

>> t = 0:pi/50:10*pi;
comet3(sin(t),cos(t),t);
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

5.3. Comando mesh


Crea una gráfica de superficie de malla. La función mesh puede dibujar una
función de dos variables (z=f(x,y)) sobre un dominio rectangular.

Ejemplo:

>> z = [ 1 2 3 4 5 6 7 8 9 10; 2 4 6 8 10 12 14 16 18 20
; 3 4 5 6 7 8 9 10 11 12];
mesh(z);
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

50
Guía de MATLAB – Para principiantes

Además se puede usar con tres argumentos mesh(x,y,z).


Siendo la longitud del vector x igual al número de columnas de la matriz z,
mientras que la longitud del vector y debe ser igual al número de filas.

>> x=linspace(1,50,10);
y=linspace(500,1000,3);
z = [ 1 2 3 4 5 6 7 8 9 10; 2 4 6 8 10 12 14 16 18 20 ; 3
4 5 6 7 8 9 10 11 12] ;
mesh(x,y,z),
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

51
Guía de MATLAB – Para principiantes

Meshgrid
Con la función meshgrid se crean dos matrices X (cuyas filas son copias de
x) y Y (cuyas columnas son copias de y). Estas matrices representan
respectivamente las coordenadas x y y de todos los puntos de la retícula.

Ejemplo:

>> x = 1:3;
y = 1:5;
[X,Y] = meshgrid(x,y)
X =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3

Y =
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

La matriz de valores Z se calcula a partir de las matrices de coordenadas X y


Y. Finalmente se dibuja la matriz Z con la función mesh.

Ejemplo:

>> x= [-2:0.2:2];
y= [-2:0.2:2];
[X,Y]=meshgrid(x,y);
Z= X.*exp(-X.^2 -Y.^2);
mesh(X,Y,Z);
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

52
Guía de MATLAB – Para principiantes

5.4. Comando surf


Las gráficas surf son similares a las mesh, pero con la diferencia que surf
crea una superficie tridimensional colorida en lugar de una rejilla.
Los colores de la superficie varía con el valor de z.
Su sintaxis es la siguiente:
• surf(Z) una sola entrada en cuyo caso usa los índices fila y columna
se toman como coordenadas x y y.
• surf(x,y,Z) un vector x de dimensión n, un vector y de dimensión m y
una matriz Z de dimensión mxn.
• surf(X,Y,Z) tres matrices donde X y Y se obtuvieron a partir del
comando meshgrid.

Ejemplo:

>> x= [-2 :0.2: 2] ;


y= [-2 :0.2: 2] ;
[X,Y]=meshgrid(x,y) ;
Z= X.*exp(-X.^2 -Y.^2);
surf(X,Y,Z),
grid on;
xlabel('eje-X'), ylabel('eje-Y'), zlabel('eje-Z');

53
Guía de MATLAB – Para principiantes

Shading flat
Elimina el mallado, asigna un color para cada región de la malla dependiendo
de su altura.

>> shading flat

54
Guía de MATLAB – Para principiantes

Shading interp
Sobreado interpolado, que elimina el mallado y difumina los cambios de color.

>> shading interp

Shading faceted
Se muestra por defecto, la malla es de color negro y la superficie adopta un
color para cada región dependiendo de su altura.

>> shading faceted

55
Guía de MATLAB – Para principiantes

Colormap
Establece el mapa de la figura actual en uno de los colormaps predefinidos

>> colormap jet

Ejemplo:

>> x = -10:0.5:10;
y =x;
[X,Y] = meshgrid(x,y);
Z = sin (sqrt(X .^2 + Y .^2)) ./ sqrt(X .^ 2 + Y .^ 2 +
0.1);
ax1=subplot(1,2,1);
surf (X,Y,Z);
colormap(ax1,jet)
shading interp;
ax2=subplot(1,2,2);
surf (X,Y,Z);
colormap(ax2,spring)
shading interp;
figure
ax3=subplot(1,2,1);
surf (X,Y,Z);
colormap(ax3,hot)
shading interp;
ax4=subplot(1,2,2);
surf (X,Y,Z);
colormap(ax1,autumn)
shading interp;

56
Guía de MATLAB – Para principiantes

La siguiente tabla enumera los colormaps predefinidos:

Nombre Escala de colores


parula
jet
hsv
hot
cool
spring
summer
autumn
winter
gray
bone
copper
pink
lines
colorcube
prism
flag
white

57
Guía de MATLAB – Para principiantes

Comando contour
Crea una gráfica de contorno 2-D.

Ejemplo:

>> x = -10:0.5:10;
y =x;
[X,Y] = meshgrid(x,y);
Z = sin (sqrt(X .^2 + Y .^2)) ./ sqrt(X .^ 2 + Y .^ 2 +
0.1);
contour(X,Y,Z);

Comando pcolor
Crea una matriz rectangular de celdas con colores determinados por
MATLAB.

Ejemplo:

>> [x,y,z] = peaks; % La función peaks genera una


superficie que parece una montaña
subplot(1,2,1);
pcolor(x,y,z); shading interp;
subplot(1,2,2);
pcolor(x,y,z); shading interp;
hold on;
contour(x,y,z,20,' k ');

58
Guía de MATLAB – Para principiantes

Las gráficas en pseudo-color son similares a las gráficas de contorno,


excepto que, en lugar de líneas que resaltan un contorno específico, se
genera un mapa bidimensional sombreado sobre una retícula.

59
Guía de MATLAB – Para principiantes

6. M-ARCHIVOS
Existen dos tipos de M-archivo, es decir, de archivos con extensión *.m. Un
tipo son los ficheros de comandos (es un archivo script) y el otro son la
funciones.

6.1. Editor
Para crear un nuevo archivo .m nos dirigimos al icono New y elegimos la
opción correspondiente (Script, Function, etc.). Aparece entonces la ventana
Editor donde podemos escribir las sentencias.

Para trabajar con el editor se utilizan los comandos tradicionales de manejo


de archivos (Archivo nuevo – Abrir archivo – Guardar archivo, etc.)

El nombre del archivo puede formarse por caracteres alfanuméricos, sin


embargo se debe tener en cuenta que:
• El nombre de archivo no puede empezar con un número.
• El nombre de archivo no puede tener espacios ni caracteres
especiales.
• El nombre de archivo no puede coincidir con el nombre de ninguna
de las variables definidas en el script.
• Es conveniente el uso de nombres cortos.

6.2. Script
Un Script o fichero de comandos contiene simplemente un conjunto de
comandos que se ejecutan sucesivamente cuando se teclea el nombre del
fichero en la línea de comandos de MATLAB o se incluye dicho nombre en
otro fichero *.m.
Para crear el script, se escriben los datos de entrada en el Editor de esta
manera:

60
Guía de MATLAB – Para principiantes

variabledeentrada = input('Texto que sale en la


pantalla')

Después, se escribe los comandos deseados y para acabar, se escribe:

disp('Texto que sale en la pantalla');variabledesalida

Ejemplo:

% ÁREA DE UN TRAPECIO
% Pide al usuario las dimensiones de un trapecio
b=input('Ingrese la base menor (m):');
B=input('Ingrese la base mayor (m):');
h=input('Ingrese la altura (m): ');
%Calcula el área del trapecio
A=h*(b+B)/2;
%Muestra en pantalla el área del trapecio
disp(['El área del trapecio es: ',num2str(A), 'm2 '])

Para ejecutar un script, se tienen diferentes alternativas:


• Ejecutar el programa desde el editor mediante el ícono de ejecución.

• Ejecutar el programa desde el editor presionando F%.


• Ejecutar el programa desde la ventana de comandos ingresando el
nombre del archivo (inmediatamente después del prompt y sin la
extensión).
En ocasiones aparecerá la siguiente ventana al ejecutar por primera vez un
script:

61
Guía de MATLAB – Para principiantes

Al seleccionar la primera opción se indica que el directorio actual de MATLAB


sea el directorio en el que se ha guardado el archivo, de esta manera, si no
hay errores de sintaxis, se ejecutarán secuencialmente todas las sentencias
del script.

6.3. Funciones
Las funciones permiten definir funciones análogas a las de MATLAB, con su
nombre, argumentos y valores de salida. La primera línea que no sea
comentario debe empezar por la palabra function, seguida por los valores de
salida (entre corchetes [ ] y separados por comas si hay más de uno), el
signo igual (=) y el nombre de la función seguido de los argumentos (entre
paréntesis ( ) y separados por comas):

function [a,b,c] = nombre_función (x,y,z)

En las líneas siguientes escribimos los argumentos de salida a partir de los


de entrada. El nombre de la función y el nombre del archivo deben ser
idénticos y no empezar por cifra sino por letra.

Todas las variables dentro de una función se aíslan del espacio de trabajo de
MATLAB. Las únicas conexiones entre las variables dentro de una función y
el espacio de trabajo de MATLAB son las variables de entrada y salida.

El número de variables de entrada pasadas a una función está disponible


dentro de la función en la variable nargin y el número de variables de salida
solicitadas cuando una función es llamada, está disponible dentro de la
función en la variable nargout.

Debemos tener siempre en cuenta que los argumentos pueden ser vectores,
luego si queremos que las operaciones se hagan elemento a elemento y no
vectorialmente debemos usar el punto.

62
Guía de MATLAB – Para principiantes

Ejemplo:

En un M-archivo guardamos lo siguiente:

function [suma,resta] = calculos (x,y) % la función se


llama calculos
suma = x + y;
resta = x - y;

Ahora si queremos usarlo, debemos escribir por ejemplo en la ventana de


comandos:

>> x = 1:10;
>> y = 16:-2:-2;
>> [a,b] = calculos (x,y)
a =
17 16 15 14 13 12 11 10 9
8
b =
-15 -12 -9 -6 -3 0 3 6 9
12

63
Guía de MATLAB – Para principiantes

7. DECISIONES y CICLOS
Las decisiones son operaciones computacionales que permiten condicionar la
ejecución de instrucciones dependiendo del resultado de una expresión cuyo
resultado únicamente puede ser: verdadero o falso. Se utiliza la sentencia if.

Los ciclos o bucles son estructuras de control que permiten repetir las
mismas o análogas operaciones sobre datos distintos. MATLAB soporta dos
tipos diferentes de bucles: el bucle for y el bucle while.

7.1. Sentencia condicional if


Esta estructura de control se usa para condicionar la ejecución de un bloque
de instrucciones utilizando como criterio el resultado de una condición.

if Condición
Instrucciones del bloque A
end

Al entrar en la estructura, se evalúa la condición. Si el resultado es verdadero


(V) se ejecutarán las instrucciones en el bloque P caso contrario, si el
resultado es falso (F) el bloque no será ejecutado. En ambos casos el
algoritmo continúa abajo del bloque.

64
Guía de MATLAB – Para principiantes

Operadores relacionales y lógicos


Para escribir la expresión que condiciona la ejecución del bloque de
instrucciones se pueden usar operadores relacionales y operadores lógicos.
Para que una expresión pueda ser usada como una condición, las variables
incluidas en la expresión deben tener asignado algún valor, caso contrario
será un error pues la condición no podría evaluarse.

En el lenguaje MATLAB las expresiones usan una simbología especial:

Matemáticas MATLAB
Operadores relacionales
<, >, ≤, ≥, =, ≠ <, >, <=, >=, ==, ~=

Los operadores lógicos sirven para comprobar la veracidad o falsedad de


enunciados, normalmente formados por más de una sentencia o
comparación. Se suelen utilizar junto a operadores relacionales.

Operador lógico Descripción Ejemplo


& (and) Verdadero sólo si las >> x=5;
dos comparaciones son >> (x>2)&(x<10)
verdaderas ans=1
| (or) Verdadero si al menos >> x=8;
una de las >> (x>2)|(x<5)
comparaciones es ans=1
verdadera
~ (not) Niega el resultado de la >> x=8;
comparación. >> ~(x>10)
Verdadero si la ans=1
comparación es falsa

Ejemplo: Describa en notación algorítmica como reducir en 10% el valor


almacenado en la variable p en caso de que su valor actual sea mayor a 40.

if p > 40
p = 0.9*p;
end

65
Guía de MATLAB – Para principiantes

Ejemplo: Calcular el total debe pagar una persona en un almacén de llantas.


Los datos son la cantidad de llantas compradas y el precio unitario. Si la
cantidad comprada es mayor a 4 llantas, el precio unitario se reduce en el
10%.

%Compra de llantas con descuento


n=input('Cantidad de llantas')
p=input('Precio unitario')
if n > 4
p = 0.9*p;
end
t=n*p;
disp('Valor a pagar');
disp(t);

66
Guía de MATLAB – Para principiantes

7.2. Sentencia condicional if else


Esta estructura de control del flujo del algoritmo chequea una condición y
dependiendo del resultado realiza las instrucciones incluidas en una de las
dos opciones

if Condición
Instrucciones del bloque A
else
Instrucciones del bloque B
end

67
Guía de MATLAB – Para principiantes

Al entrar a esta estructura, se evalúa la condición. Si el resultado es


verdadero (V) se ejecutará el bloque P asociado al valor verdadero, caso
contrario, si el resultado es falso (F) se ejecutará el bloque Q. El algoritmo
continúa abajo, después de ejecutar alguno de los dos bloques.

Ejemplo: Describa en notación algorítmica como asignar a la variable m el


mayor entre dos valores almacenados respectivamente en las variables a y
b.

68
Guía de MATLAB – Para principiantes

Antes del bloque, las variables a y b tienen que haber sido asignadas algún
valor, caso contrario sería un error

Ejemplo: Describa en notación algorítmica una solución al siguiente


problema. Para el pago semanal a un obrero se consideran los siguientes
datos: horas trabajadas, tarifa por hora y descuentos. Si la cantidad de horas
trabajadas en la semana es mayor a 40, se le debe pagar las horas en
exceso de 40 con una bonificación de 50% adicional al pago normal.

Variables
c: Cantidad de horas trabajadas en la semana
t: Tarifa por hora
d: Descuentos que se aplican al pago semanal
p: Pago que recibe el obrero

%Pago semanal
c=input('Horas trabajadas ');
t=input('Tarifa por hora ');
d=input('Descuentos ');
if t <= 40
p=c*t - d;

69
Guía de MATLAB – Para principiantes

else
p=40*t + 1.5*t*(c - 40) - d;
end
disp('Valor a pagar');
disp(p);

Ejemplo. Dado un número entero determinar si es un número par o impar.


%Determinar si un número es para o impar
x=input('Ingrese un numero ');
r=mod(x, 2); %Devuelve el resto de la división de x entre
2
if r == 0
disp('Par');
else
disp('Impar');
end

Ejemplo. Dados dos números enteros, determinar si uno es múltiplo del otro.
%Determinar si un número es múltiplo de otro
a=input('Ingrese el primer número ');
b=input('Ingrese el segundo número ');
if mod(a,b) == 0 | mod(b,a) == 0
disp('son múltiplos');
else
disp('no son múltiplos');
end

7.3. Sentencia if anidada


Para describir la selección de una acción entre varias opciones posibles se
pueden estructurar decisiones dentro de otras decisiones.

Ejemplo: Suponga que un local vende llantas para cierto tipo de carro con la
siguiente política:

Cantidad Precio unitario


Menos de 5 80
5o6 70
Más de 6 60
Lea el número de llantas de una compra y muestre el valor que debe pagar

70
Guía de MATLAB – Para principiantes

Variables

n: Cantidad de llantas compradas


p: Precio unitario (80, 70, o 60)
t: Valor de la compra

71
Guía de MATLAB – Para principiantes

% Compra de llantas con descuento


n=input('Cantidad de llantas ');
if n<5
p=80;
else
if n==5 | n==6
p=70;
else
p=60;
end
end
t=n*p
disp('Valor a pagar ');
disp(t);

7.4. Bucle for


Esta estructura de control se usa para poder repetir un número especificado
de veces determinada acción.

for i=a:b:c
Bloque de instrucciones que se repiten
end

72
Guía de MATLAB – Para principiantes

En donde
i: Variable que toma los valores del conteo
a: Valor inicial del conteo
b: Valor con el que se incrementa el conteo
c: Valor final del conteo

Para usar esta estructura de control es necesario especificar el conteo de


ciclos indicando el valor inicial del conteo, el incremento y el valor final. Al
ejecutarse la estructura el valor de la variable del conteo cambiará siguiendo
la especificación establecida.

Al entrar a esta estructura, se inicia el conteo, si la variable del conteo no


excede al valor final, se ejecuta el bloque, regresa nuevamente al inicio del
ciclo y se incrementa la variable del conteo. Mientras el valor del conteo no
exceda al valor final, el bloque será nuevamente ejecutado. Cuando el conteo
exceda al valor final, la ejecución continuará después del bloque.

Ejemplo: Dado un número entero positivo n calcular y mostrar la suma de los


cubos de los primeros n números naturales.

Variables
n: Cantidad de números naturales
s: Suma de los cubos
i: Conteo de ciclos (sus valores son los números naturales)

%Suma de cubos
n=input('Ingrese el valor final ');
s=0;
for i=1:n
s=s + i^3;
end
disp('La suma es');
disp(s);

73
Guía de MATLAB – Para principiantes

Ejemplo. Dado un número entero, liste las raíces cuadradas de los enteros
impares entre 1 y el dato dado.

n=input('Ingrese el valor final ');


for x = 1: 2: n
r=sqrt(x);
disp([x,r]);
end

Ejemplo. Suma de los cuadrados de los primeros n números naturales.

n=input('Ingrese el valor final ');


s=0;
for i = 1: n
c=i^2;
s=s+c;
end
disp('La suma es');

74
Guía de MATLAB – Para principiantes

disp(s);

Ejemplo. Muestre el promedio de n datos ingresados desde el teclado


n=input('Cantidad de datos ');
s=0;
for i = 1: n
x=input('Ingrese un dato ');
s=s+x;
end
p=s/n;
disp('El promedio es');
disp(p);

7.5. Bucle while


Esta estructura de control nos permite repetir un determinado bloque de
instrucciones cuando una condición es verdadera.

while Condición
Bloque de instrucciones que se repiten
end

Al entrar a esta estructura, se evalúa la condición. Si el resultado es


verdadero (V) se ejecutará el bloque y regresará nuevamente a evaluar la
condición. Mientras la condición mantenga el valor verdadero, el bloque de
instrucciones seguirá ejecutándose. Esto significa que es necesario que en

75
Guía de MATLAB – Para principiantes

algún ciclo la condición tenga el resultado falso (F) para salir de la estructura
y continuar la ejecución después del bloque.

Ejemplo: Dada una cantidad inicial de bacterias, determine en que día la


cantidad de bacterias excede a un valor máximo sabiendo que cada día se
duplica esta cantidad.

%Crecimiento de la cantidad de bacterias


x=input('Ingrese la cantidad inicial ');
m=input('Ingrese la cantidad máxima ');
d=0;
while x <= m
x=2*x;
d=d+1;
end
disp('La cantidad excede al máximo en el día ');
disp(d);

76
Guía de MATLAB – Para principiantes

Ejemplo. Suma de los cuadrados de los primero n números naturales

%Suma de cuadrados con WHILE


n=input('Ingrese el valor final ');
s=0;
i=1;
while i <= n
c=i^2;
s=s+c;
i=i+1;
end
disp('La suma es');
disp(s);

Ejemplo. Simular lanzamientos de un dado. Muestre el resultado en cada


intento hasta que salga el 5.

%Simular lanzamientos de un dado hasta que sale un número


x=0;
while x~=5
x=fix(rand*6)+1; %fix redondea al entero más cercano a
cero, rand devuelve un número aleatorio entre 0 y 1
disp(x)
end

Ejemplo. Simular lanzamientos de un dado. Determinar la cantidad de


lanzamientos que se realizaron hasta que se obtuvo el número 5.

%Conteo de lanzamientos de un dado


c=0;
x=0;
while x~=5
x=fix(rand*6)+1; %fix redondea al entero más cercano a
cero, rand devuelve un número aleatorio entre 0 y 1
c=c+1;
end
disp('Cantidad de lanzamientos hasta que salió el 5');
disp(c);

77
Guía de MATLAB – Para principiantes

8. INTERFAZ GRÁFICA DE USUARIO

8.1. Introducción
GUIDE es un entorno de programación visual disponible en MATLAB
para realizar y ejecutar programas que necesiten ingreso continuo de
datos. Tiene las características básicas de todos los programas visuales
como Visual Basic o Visual C++.

8.2. Inicio
Para iniciar nuestro proyecto ejecutamos la siguiente instrucción en la
ventana de comandos:

>> guide

Se presenta el siguiente cuadro de diálogo:

Se presentan las siguientes opciones:

• Blank GUI (Default): La opción de interfaz gráfica de usuario en


blanco (viene predeterminada), nos presenta un formulario nuevo,
en el cual podemos diseñar nuestro programa.

78
Guía de MATLAB – Para principiantes

• GUI with Uicontrols: Esta opción presenta un ejemplo en el cual se


calcula la masa, dada la densidad y el volumen, en alguno de los
dos sistemas de unidades. Podemos ejecutar este ejemplo y obtener
resultados.

• GUI with Axes and Menu: Esta opción es otro ejemplo el cual con
tiene el menú File con las opciones Open, Print y Close. En el
formulario tiene un Popup menu, un push button y un objeto Axes,
podemos ejecutar el programa eligiendo alguna de las seis opciones
que se encuentran en el menú despegable y haciendo click en el
botón de comando.

• Modal Question Dialog: Con esta opción se muestra en la pantalla


un cuadro de diálogo común, el cual consta de una pequeña
imagen, una etiqueta y dos botones Yes y No, dependiendo del
botón que se presione, el GUI retorna el texto seleccionado (la
cadena de caracteres ‘Yes’ o ‘No’).

Elegimos la primera opción, Blank GUI, y tenemos:

79
Guía de MATLAB – Para principiantes

La interfaz gráfica cuenta con las siguientes herramientas:

Alinear objetos
Editor de menú
Editor de orden de etiqueta
Editor de barra de herramientas
Editor del M-file
Propiedades de objetos
Navegador de objetos
Grabar y ejecutar (ctrl. + T).

La siguiente tabla muestra una descripción de los componentes:

Control Valor de estilo Descripción


Check box ‘checkbox’ Indica el estado de una opción o
atributo
Editable Text ‘edit’ Caja para editar texto
Pop-up menú ‘popupmenu’ Provee una lista de opciones
List Box ‘listbox’ Muestra una lista deslizable
Push Button ‘pushbutton’ Invoca un evento inmediatamente
Radio Button ‘radio’ Indica una opción que puede ser
seleccionada
Toggle ‘togglebutton’ Solo dos estados, “ on” o “off”
Button
Slider ‘slider’ Usado para representar un rango de
valores
Static Text ‘text’ Muestra un string de texto en una caja
Panel button Agrupa botones como un grupo
Button Group Permite exclusividad de selección con
los radio button

Cambio de preferencias para mostrar nombres


Caso no nos aparezca la etiqueta de cada elemento de la paleta de
componentes nos dirigimos a: File>>Preferentes y seleccionamos Show
names in component palette.

80
Guía de MATLAB – Para principiantes

Importante:
• El editor permite construir interfaces arrastrando y soltando
componentes en el área de diseño de la GUI
• Todas las GUIs creadas con guide empiezan con una función inical
(callback) que se invoca cuando se invoca la interfaz.
• La operación automática de guardado (sabe) genera un fichero .m y
un fichero .fig

8.3. Propiedades de los componentes


Cada uno de los elementos de GUI, tiene un conjunto de opciones que
podemos acceder con click derecho.

La opción Property Inspector nos permite personalizar cada elemento.

81
Guía de MATLAB – Para principiantes

Al hacer click derecho en el elemento ubicado en el área de diseño, una de


las opciones más importantes es View Callbacks (Callbacks son funciones
que realizan las acciones requeridas cuando un componente se activa), la
cual, al ejecutarla, abre el archivo .m asociado a nuestro diseño y nos
posiciona en la parte del programa que corresponde a la subrutina que se
ejecutará cuando se realice una determinada acción sobre el elemento que
estamos editando.

Por ejemplo, al ejecutar View Callbacks>>Callbacks en el Push Button, nos


ubicaremos en la parte del programa:

function pushbutton1_Callback(hObject, eventdata,


handles)
%hObject handle to pushbutton1 (see GCBO)
%eventdata reserved-to be defined in a future version of
MATLAB

82
Guía de MATLAB – Para principiantes

%handles structure with handles and user data (see


GUIDATA)

8.4. Funcionamiento de una aplicación GUI


Una aplicación GUIDE consta de dos archivos: .m y .fig. El archivo .m es el
que contiene el código con las correspondencias de los botones de control de
la interfaz y el archivo .fig contiene los elementos gráficos.

Cada vez que se adicione un nuevo elemento en la interfaz gráfica, se genera


automáticamente código en el archivo .m.

Para ejecutar una Interfaz Gráfica, si la hemos etiquetado con el nombre


curso.fig, simplemente ejecutamos en la ventana de comandos >> curso. O
haciendo click derecho en el m-file y seleccionando la opción RUN.

8.5. Manejo de datos entre los elementos de la aplicación y


el archivo .m
Todos los valores de las propiedades de los elementos (color, valor, posición,
string...) y los valores de las variables transitorias del programa se almacenan
en una estructura, los cuales son accedidos mediante un único y mismo
identificador para todos éstos. Tomando el programa listado anteriormente, el
identificador se asigna en:

handles.output = hObject;

handles, es nuestro identificador a los datos de la aplicación. Esta definición


de identificador es salvada con la siguiente instrucción:

guidata(hObject, handles);

guidata, es la sentencia para salvarlos datos de la aplicación.

Nota: guidata es la función que guarda las variables y propiedades de los


elementos en la estructura de datos de la aplicación, por lo tanto, como regla
general, en cada subrutina se debe escribir en la última línea lo siguiente:

guidata(hObject,handles);

83
Guía de MATLAB – Para principiantes

Esta sentencia nos garantiza que cualquier cambio o asignación de


propiedades o variables quede almacenado.

Por ejemplo, si dentro de una subrutina una operación dio como resultado
una variable luis para poder utilizarla desde el programa u otra subrutina
debemos salvarla de la siguiente manera:

handles.luis=luis;
guidata(hObject,handles);

La primera línea crea la variable luis a la estructura de datos de la aplicación


apuntada por handles y la segunda graba el valor.

8.6. Sentencias GET Y SET


La asignación u obtención de valores de los componentes se realiza
mediante las sentencias get y set. Por ejemplo si queremos que la variable
unt tenga el valor del Slider escribimos:

unt= get(handles.slider1,'Value');

Notar que siempre se obtienen los datos a través de los identificadores


handles.

Para asignar el valor a la variable unt al statictext etiquetada como text1


escribimos:

set(handles.text1,'String',utpl); %Escribe el valor del


Slider...en static-text

Ejemplo
Calculadora de la presión de vapor para sustancias puras utilizando la
Ecuación de Antoine.

𝐵
𝑙𝑜𝑔𝑃𝑣𝑎𝑝 = 𝐴 −
𝑇+𝐶

Los datos a ingresar son: la temperatura en °C, y las constantes A, B y C. El


resultado dado es la presión de saturación en mmHg.

84
Guía de MATLAB – Para principiantes

No. SUSTANCIA FORMULA A B C


1 carbon-tetrachloride CCL4 6.8941 1219.58 227.17
2 trichlorofluoromethane CCL3F 6.8843 1043.01 236.86
3 dichlorodifluoromethane CCL2F2 6.68619 782.072 235.377
4 chlorotrifluoromethane CCLF3 6.35109 522.061 231.677

Insertamos los componentes de la siguiente forma:

Los Tag de los “Edit Text” serán temperatura, A, B y C respectivamente, y el


Tag del “Static Text” en el cuál se visualizara la respuesta será Pvap. Los Tag
restantes son irrelevantes pues no participan en el código. El “Push Button”
llevará por Tag pushbutton2.

Una vez realizado damos en guardar y nos dirigimos al archivo .m creado.

85
Guía de MATLAB – Para principiantes

Justo debajo de function A_Callback(hObject, eventdata,


handles)y de los comentarios correspondientes, escribimos el siguiente
código:

Val=get(hObject,'String'); %Almacenar valor ingresado


NewVal = str2double(Val); %Transformar a formato double
handles.A=NewVal; %Almacenar en identificador
guidata(hObject,handles); %Salvar datos de la aplicación

Recuérdese que la instrucción get la usamos para obtener datos ingresados


por el usuario. Así, la línea Val=get(hObject,'String') almacena en
Val el valor ingresado en formato String.

La sentencia NewVal = str2double(Val) realiza la transformación de


string a double, o de palabra a número.
La sentencia handles.edit1=NewVal almacena NewVal en el identificador
handles.A. Por último, salvamos los datos de la aplicación con la sentencia
guidata(hObject,handles).

Repetimos las mismas sentencias justo debajo de:

function B_Callback(hObject, eventdata, handles)


function C_Callback(hObject, eventdata, handles)
function temperatura_Callback(hObject, eventdata,
handles)

Pero usando el identificador handles.B=NewVal, handles.C=NewVal y


handles.temperatura=NewVal, según sea el caso.

Finalmente debajo de function pushbutton2_Callback(hObject,


eventdata, handles), y de los comentarios correspondientes, editamos
el siguiente código:

A=handles.A;
B=handles.B;
C=handles.C;
T=handles.temperatura;
Pv=10^(A-B/(T+C));
set(handles.Pvap,'String',Pv);

La cuarta línea contiene la instrucción set, con la cual establecemos un valor


string al componente Pvap (Static text), con el identificador handles.Pvap.

86
Guía de MATLAB – Para principiantes

8.7. Radio Button, Button Group

Gracias a este panel Button Group, los radio button que se encuentren
dentro del panel podrán seleccionarse solamente uno a la vez haciéndolo
muy útil para los casos en los cuales e necesitan presentar una de varias
opciones en la GUI.

Además este sencillo programa a través de un botón muestra en un static


text la opción que se ha seleccionado.

87
Guía de MATLAB – Para principiantes

Para poder determinar si algún radio button especifico esta seleccionado o


no, se aplica la siguiente sentencia:

Ejecutar View Callbacks>>Callbacks en el Push Button, nos ubicaremos en la


parte del programa:
function pushbutton_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton (see GCBO)
% eventdata reserved - to be defined in a future version of
MATLAB
% handles structure with handles and user data (see GUIDATA)

Justo debajo escribimos el siguiente código

estado = get(handles.radiobt1,'Value');
if estado==1
set(handles.txtSalida,'String', 'Opcion 1');

88
Guía de MATLAB – Para principiantes

end

estado = get(handles.radiobt2,'Value');
if estado==1
set(handles.txtSalida,'String', 'Opcion 2');
end

estado = get(handles.radiobt3,'Value');
if estado==1
set(handles.txtSalida,'String', 'Opcion 3');
end

estado = get(handles.radiobt4,'Value');
if estado==1
set(handles.txtSalida,'String', 'Opcion 4');
end

Recuerde que radiobt1 es el nombre del primer radio button sobre la GUI,
con el código estado = get(handles.radiobt1,'Value');
guardamos en la variable estado el estado del radio button, siendo 1 para
seleccionado y 0 para no seleccionado.

De igual modo se repite la acción para los radio button siguientes, radiobt2,
radiobt3 y radiobt4.

if estado==1
set(handles.txtSalida,'String', 'Opcion 2');
end

Determina el String del Static text con nombre de txtSalida, según el valor de
la variable estado.

89
Guía de MATLAB – Para principiantes

8.8. ListBox

Creamos un nuevo GUI etiquetado como Listbox. Añadimos al diseño un


listbox y un par de statictext y los ordenamos como muestra la figura.

90
Guía de MATLAB – Para principiantes

Haciendo doble-click en listbox editamos los elementos de la lista. Puedes


colocar los nombres que desees.

Con un click derecho en el listbox, nos ubicamos en View


Callbacks>>Callbacks. Esto nos lleva a la m-file donde se encuentra la
subrutina del listbox.

Editamos el siguiente código:

inf=get(hObject,'Value');
gos=get(hObject,'String');

switch inf
case 1
set(handles.text1,'string','Opción 1
seleccionada');
case 2
set(handles.text1,'string','Opción 2
seleccionada');
case 3
set(handles.text1,'string','Opción 3
seleccionada');

91
Guía de MATLAB – Para principiantes

case 4
set(handles.text1,'string','Opción 4
seleccionada');
case 5
set(handles.text1,'string','Opción 5
seleccionada');
case 6
set(handles.text1,'string','Opción 6
seleccionada');
case 7
set(handles.text1,'string','Opción 7
seleccionada');
case 8
set(handles.text1,'string','Opción 8
seleccionada');
end

Recuérdese que podemos cambiar la sentencia switch por un if-elseif-else.

92
Guía de MATLAB – Para principiantes

9. BIBLIOGRAFIA
- MATLAB Programming, MATLAB The Language of Technical
Computing, 2004, The MathWorks, Inc.

93

También podría gustarte