Está en la página 1de 16

USO DE FUNCIONES EN MATLAB 1

Uso de Funciones en Matlab


Enríquez Andrés, Estudiante, UTN, Guzmán Mishel, Estudiante, UTN, Villarreal Jorge, Estudiante,
UTN, Yucailla Viviana, Estudiante, UTN.

componen el programa. Por lo general, las secciones del código


Resumen— En el presente paper se enuncia el uso de funciones de los programas de cómputo se pueden categorizar en una de
en Matlab y las estructuras de control, también se explica las tres estructuras: secuencias, estructuras de selección y
entradas y operaciones de salida, los operadores relacionales y estructuras de repetición.
lógicos, funciones lógicas, estructuras de selección y los ciclos
repetitivos que se puede utilizar en Matlab, para el desarrollo de
ejercicios aplicativos en cualquier área de ingeniería. Además, se
presenta el desarrollo de algunos ejercicios realizados en Matlab
con respecto a los temas que se trata en el mismo, para comprender
de manera exitosa el uso de bucles, funciones lógicas, etc.

Términos de índice— bucle, estructura de control, secuencia,


operador relacional.

I. I NTRODUCCIÓN

M ATLAB es un potente paquete de software para


computación científica, orientado al cálculo numérico, a
las operaciones matriciales y especialmente a las aplicaciones
1. Estructuras de programación usadas en MATLAB. [1]

Hasta el momento, se ha escrito en clase los códigos que


científicas y de ingeniería. contiene secuencias, pero ninguna de las otras estructuras:
Puede ser utilizado como simple calculadora matricial, pero
su interés principal radica en los cientos de funciones tanto de - Las secuencias son listas de comandos que se ejecutan
propósito general como especializadas que posee, así como en una después de otra.
sus posibilidades para la visualización gráfica. - Una estructura de selección permite al programador
MATLAB posee además un lenguaje de programación ejecutar un comando (o conjunto de comandos) si
propio, muy próximo a los habituales en cálculo numérico que algún criterio es verdadero, y un segundo comando o
permite al usuario escribir sus propios scripts (conjunto de conjunto de comandos si el criterio es falso. Un
comandos escritos en un fichero, que se pueden ejecutar con enunciado de selección proporciona los medios de
una única orden) para resolver un problema concreto y también elegir entre dichas rutas, con base en una condición
escribir nuevas funciones con, por ejemplo, sus propios lógica. Las condiciones que se evalúan con frecuencia
contienen operadores tanto relacionales como lógicos
algoritmos.
o funciones.
MATLAB dispone, además, de numerosas Toolboxes, que le
- Una estructura de repetición, o bucle, hace que un
añaden funcionalidades especializadas.
grupo de enunciados se ejecute varias veces. El
A continuación, se describirá el uso de las funciones de número de veces que se ejecuta un bucle depende de
Matlab y las estructuras de control, de igual manera la entrada un contador o de la evaluación de una condición
y operaciones de salida, operadores relacionales y lógicos, lógica. [1]
funciones lógicas, estructuras de selección y por último los
ciclos repetitivos. A. Entrada y Operaciones de Salida

II. FUNCIONES LÓGICAS Y ESTRUCTURAS DE CONTROL Existe un comando para introducir información en un
programa cuando estamos en modo de ejecución. Este comando
Una forma de pensar los programas de cómputo (no sólo es: v=input(‘Cadena de Caracteres’) input realiza dos tareas:
MATLAB) es considerar cómo se organizan los enunciados que

"Este trabajo fue realizado para su revisión el 16 de septiembre del 2020 para Universidad Técnica del Norte, Ibarra, Ecuador (correo electrónico:
la asignatura de Software de Simulación." jlvillarrealr@utn.edu.ec). Autor/a, Yucailla,V. estudiante de la Universidad
Autor/a, Enríquez A. estudiante de la Universidad Técnica del Norte, Ibarra, Técnica del Norte, Ibarra, Ecuador (correo electrónico:
Ecuador (correo electrónico: asenriquezs@utn.edu.ec). Autor/a, Guzmán M. vyyucaillam@utn.edu.ec).
estudiante de la Universidad Técnica del Norte, Ibarra, Ecuador (correo
electrónico: maguzmanc@utn.edu.ec). Autor/a, Villarreal J. estudiante de la
USO DE FUNCIONES EN MATLAB 2

1) Imprime en pantalla la cadena de caracteres que lleva mayor que y para cada comparación de elementos, de modo que
como argumento. toda la comparación fue falsa y la respuesta fue una cadena de
2) Los datos que el usuario teclea en respuesta al letrero, los ceros. Si, en vez de ello, se tiene:
introduce en la variable v.
𝑥 = [1,2,3,4,5];
Para que un programa en modo de ejecución pueda escribir 𝑦 = [−2,0,2,4,6];
letreros, avisos, etc. por pantalla, se utiliza el comando: Entonces
disp(‘Cadena de Caracteres’) que escribe la cadena de 𝑎𝑛𝑠 = 0 0 0 0 1
caracteres que tiene como argumento en pantalla.
Para escribir el valor de una variable, se utiliza el comando: El resultado indica que la comparación fue falsa para los
disp(v) que muestra en pantalla el valor de la variable v. primeros cuatro elementos, pero verdadera para el último. Para
Para escritura de texto y/o datos en pantalla, se puede utilizar que una comparación sea verdadera para toda una matriz, debe
la función: sprintf(‘formato’,variables). [1] ser verdadera para cada elemento en la matriz. En otras
palabras, todos los resultados deben ser unos.
MATLAB también le permite combinar comparaciones con los
Ejemplos:
operadores lógicos and, not y or. [1]
>> n=input(‘teclea el número de elementos’)
El código:
>>disp(‘este valor no es adecuado’) 𝑥 = [1, 2, 3, 4, 5];
𝑦 = [−2, 0, 2, 4, 6];
B. Operadores relacionales y lógicos 𝑧 = [8, 8, 8, 8, 8];
𝑧 > 𝑥&𝑧 > 𝑦
Las estructuras de selección y repetición que se usan en
MATLAB dependen de operadores relacionales y lógicos. TABLA I
MATLAB tiene seis operadores relacionales para comparar dos OPERADORES RELACIONALES

matrices de igual tamaño, como se muestra en la tabla 1. Operador Interpretación


Las comparaciones son verdaderas o falsas, y la mayoría de relacional
los programas de cómputo (incluido MATLAB) usa el número < Menor que
1 para verdadero (true) y el 0 para falso (false). (En realidad,
<= Menor que o igual a
MATLAB toma cualquier número distinto de cero como
verdadero.) Si se definen dos escalares: > Mayor que
>= Mayor que o igual a
𝑥 = 5; == Igual a
𝑦 = 1; ~= No igual a
Se observa el operador relacional con la respectiva interpretación de cada uno.
y usa un operador relacional como <, el resultado de la
comparación:
𝑥<𝑦 TABLA II
OPERADORES LÓGICOS

es verdadero o falso. En este caso, x no es menor que y, por lo Operador lógico Interpretación
que MATLAB responde: & and
𝑎𝑛𝑠 = 0 ~ not
| or
lo que indica que la comparación fue falsa. MATLAB usa esta
xor or exclusiva
respuesta en enunciados de selección y en estructuras de
Se observa el operador lógico con la respectiva interpretación de cada uno.
repetición para tomar decisiones.
Regresa
Desde luego, las variables en MATLAB, por lo general,
𝑎𝑛𝑠 = 1 1 1 1 1
representan matrices completas. Si se redefinen x y y, se puede
ver cómo MATLAB maneja las comparaciones entre matrices.
puesto que z es mayor que x y y para cada elemento. El
Por ejemplo,
enunciado:
𝑥 = 1: 5;
𝑥>𝑦 | 𝑥>𝑧
𝑦 = 𝑥 − 4;
𝑥<𝑦
Se lee como “x” es mayor que y o x es mayor que z y regresa
Regresa:
𝑎𝑛𝑠 = 0 0 0 0 0
𝑎𝑛𝑠 = 1 1 1 0 0
MATLAB compara elementos correspondientes y crea una
matriz respuesta de ceros y unos. En el ejemplo previo, x fue
USO DE FUNCIONES EN MATLAB 3

Esto significa que la condición es verdadera para los 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 4 𝑚𝑖𝑑𝑒 72 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
primeros tres elementos y falsa para los últimos dos. 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 5 𝑚𝑖𝑑𝑒 69 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
Estos operadores relacionales y lógicos se usan tanto en 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 6 𝑚𝑖𝑑𝑒 78 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
estructuras de selección como en bucles para determinar qué 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 7 𝑚𝑖𝑑𝑒 75 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
comandos se deben ejecutar. [1]
Obviamente, también podría crear una tabla de quienes no
satisfacen el requisito:
C. Funciones lógicas
𝑑𝑖𝑠𝑝(′𝐿𝑜𝑠 𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒𝑠 𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠 𝑠𝑎𝑡𝑖𝑠𝑓𝑎𝑐𝑒𝑛 𝑒𝑙 𝑟𝑒𝑞𝑢𝑖𝑠𝑖𝑡𝑜
MATLAB ofrece tanto estructuras de selección tradicionales 𝑑𝑒 𝑒𝑠𝑡𝑎𝑡𝑢𝑟𝑎^′ ); 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜#%4.0𝑓 𝑚𝑖𝑑𝑒 %4.0𝑓
por ejemplo la familia de funciones if como una serie de 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜 \𝑛^′, [𝑑𝑒𝑐𝑙𝑖𝑛𝑒; ℎ𝑒𝑖𝑔ℎ𝑡(𝑑𝑒𝑐𝑙𝑖𝑛𝑒)])
funciones lógicas que realizan en gran medida la misma tarea.
La función lógica principal es find, que con frecuencia se puede 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 1 𝑚𝑖𝑑𝑒 63 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
usar en lugar tanto de las estructuras de selección tradicionales 𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 3 𝑚𝑖𝑑𝑒 65 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜
como de los bucles. [1]
Se puede crear criterios de búsqueda bastante complicados
Find que usen los operadores lógicos. [1]
Por ejemplo, suponga que los solicitantes deben tener al
El comando find busca una matriz e identifica cuáles menos 18 años y menos de 35. Entonces sus datos se pueden
elementos en dicha matriz satisfacen un criterio dado. ver como esto:
Por ejemplo, la Academia Naval de Estados Unidos requiere
solicitantes que tengan al menos 5´6” (66”) de alto. TABLA III
Considerando esta lista de alturas de solicitantes: DATOS DEL EJEMPLO
Estatura, pulgadas Edad, años
ℎ𝑒𝑖𝑔ℎ𝑡 = [63, 67, 65, 72, 69, 78, 75] 63 18
67 19
Puede encontrar los números índice de los elementos que
satisfacen el criterio al usar el comando find: 65 18
72 20
𝑎𝑐𝑐𝑒𝑝𝑡 = 𝑓𝑖𝑛𝑑(ℎ𝑒𝑖𝑔ℎ𝑡 ≥ 66) 69 36
78 34
Este comando regresa: 75 12
Se observa los datos de estatura, pulgadas/edad, años del ejemplo de
𝑎𝑐𝑐𝑒𝑝𝑡 = 2 4 5 6 7 solicitantes.

La función find regresa los números índice de la matriz que Ahora defina la matriz y encuentre los números índice de los
satisfacen el criterio. Si quiere saber cuáles son las estaturas elementos en la columna 1 que sean mayores que 66. Entonces
reales, puede llamar a cada elemento con el número índice: se encuentra cuáles de dichos elementos en la columna 2 son
también mayores que o iguales a 18 y menores que o iguales a
ℎ𝑒𝑖𝑔ℎ𝑡(𝑎𝑐𝑐𝑒𝑝𝑡) 35. Se usan los comandos:
𝑎𝑛𝑠 = 67 72 69 78 75
𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠
También podría determinar cuáles solicitantes no satisfacen el = [ 63, 18; 67, 19; 65, 18; 72, 20; 69, 36; 78,34; 75, 12 ]
criterio. Use: 𝑝𝑎𝑠𝑠 = 𝑓𝑖𝑛𝑑(𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠(: ,1) ≥ 66 & 𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠(; ,2)
𝑑𝑒𝑐𝑙𝑖𝑛𝑒 = 𝑓𝑖𝑛𝑑(ℎ𝑒𝑖𝑔ℎ𝑡 < 66) ≥ 18 & 𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠(: ,2) < 35
Que produce que regresa
𝑑𝑒𝑐𝑙𝑖𝑛𝑒 = 13
𝑝𝑎𝑠𝑠 =
Podría usar el comando disp y fprintf para crear un reporte 2
más legible: 4
6
𝑑𝑖𝑠𝑝(′𝐿𝑜𝑠 𝑠𝑖𝑔𝑢𝑖𝑒𝑛𝑡𝑒𝑠 𝑐𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜𝑠 𝑠𝑎𝑡𝑖𝑠𝑓𝑎𝑐𝑒𝑛 𝑒𝑙 𝑟𝑒𝑞𝑢𝑖𝑠𝑖𝑡𝑜
𝑑𝑒 𝑒𝑠𝑡𝑎𝑡𝑢𝑟𝑎^′ ); 𝑓𝑝𝑟𝑖𝑛𝑡𝑓(′𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜#%4.0𝑓 𝑚𝑖𝑑𝑒 %4.0𝑓 la lista de solicitantes que satisfacen todos los criterios. Se
𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜 \𝑛^′, [𝑎𝑐𝑐𝑒𝑝𝑡; ℎ𝑒𝑖𝑔ℎ𝑡(𝑎𝑐𝑐𝑒𝑝𝑡)]) podría usar fprintf para crear una salida más agradable. Primero
cree una tabla de los datos a desplegar:
Estos comandos regresan la siguiente tabla en la ventana de
comandos: 𝑟𝑒𝑠𝑢𝑙𝑡
Los siguientes candidatos satisfacen el requisito de estatura = [𝑝𝑎𝑠𝑠, 𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠(𝑝𝑎𝑠𝑠, 1), 𝑎𝑝𝑝𝑙𝑖𝑐𝑎𝑛𝑡𝑠(𝑝𝑎𝑠𝑠, 2)]′ ;

𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 2 𝑚𝑖𝑑𝑒 67 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜


USO DE FUNCIONES EN MATLAB 4

Luego se usa fprintf para enviar los resultados a la ventana D. Estructura de selección
de comandos:
fprintf('Solicitante # %4.0f mide %4.0f pulgadas de alto y La mayoría de las veces, el comando find puede y debe
%4.0f años de edad \n^',results) utilizarse en vez de un enunciado if. Sin embargo, hay
situaciones en las cuales se requiere el enunciado if. Esta
La lista resultante es: sección describe la sintaxis que se emplea en los enunciados if.
𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 2 𝑚𝑖𝑑𝑒 67 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜 𝑦 19 𝑎ñ𝑜𝑠 𝑑𝑒 𝑒𝑑𝑎𝑑
𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 4 𝑚𝑖𝑑𝑒 72 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜 𝑦 20 𝑎ñ𝑜𝑠 𝑑𝑒 𝑒𝑑𝑎𝑑
El if simple
𝐶𝑎𝑛𝑑𝑖𝑑𝑎𝑡𝑜 # 6 𝑚𝑖𝑑𝑒 78 𝑝𝑢𝑙𝑔𝑎𝑑𝑎𝑠 𝑑𝑒 𝑎𝑙𝑡𝑜 𝑦 34 𝑎ñ𝑜𝑠 𝑑𝑒 𝑒𝑑𝑎𝑑
Un enunciado if simple tiene la siguiente forma:
Hasta el momento se usó find sólo para regresar un solo
número índice. Si se definen dos salidas desde find, como en: 𝐼𝑓 𝑒𝑛𝑢𝑛𝑐𝑖𝑎𝑑𝑜𝑠 𝑑𝑒
𝑐𝑜𝑚𝑝𝑎𝑟𝑎𝑐𝑖ó𝑛
[𝑟𝑜𝑤, 𝑐𝑜𝑙] = 𝑓𝑖𝑛𝑑(𝑐𝑟𝑖𝑡𝑒𝑟𝑖𝑎) 𝑒𝑛𝑑

regresará los números de fila y columna adecuados (también Si la comparación (una expresión lógica) es verdadera, se
llamados números índice o subíndices fila y columna). ejecutan los enunciados entre el enunciado if y el enunciado
end. Si la comparación es falsa, el programa salta
Ahora, imagine que ya tiene una matriz de valores de inmediatamente al enunciado que sigue a end. Una buena
temperatura de paciente medidos en una clínica. La columna práctica de programación es sangrar los enunciados dentro de
representa el número de la estación donde se tomó la una estructura if para legibilidad. Sin embargo, recuerde que
temperatura. [1] MATLAB ignora el espacio en blanco. Sus programas correrán
sin importar si usted sangró o no alguna de sus líneas de código.
Por tanto, el comando: [1]

𝑡𝑒𝑚𝑝 = [95.3, 100.2, 98.6; 97.4, 99.2, 98.9; 100.1, 99.3, 97] He aquí un ejemplo realmente simple de un enunciado if:

Produce 𝐼𝑓 𝐺 < 50
𝑐𝑜𝑢𝑛𝑡 = 𝑐𝑜𝑢𝑛𝑡 + 1
𝑡𝑒𝑚𝑝 = 𝑑𝑖𝑠𝑝(𝐺)
95.3000 100.2000 98.6000 𝑒𝑛𝑑
97.4000 99.200 98.9000
100.1000 99.3000 97.0000 Este enunciado (desde if hasta end) es fácil de interpretar si
G es un escalar. Si G es menor que 50, entonces se ejecutan los
Y enunciados entre las líneas if y end. Por ejemplo, si G tiene un
𝑒𝑙𝑒𝑚𝑒𝑛𝑡 = 𝑓𝑖𝑛𝑑(𝑡𝑒𝑚𝑝 > 98.6) valor de 25, entonces count aumenta por 1 y G se despliega en
la pantalla. Sin embargo, si G no es escalar, entonces el
produce el número de elemento para la representación de índice enunciado if considera la comparación verdadera ¡sólo si es
sencillo: verdadera para todo elemento! Por tanto, si G se define desde
0 hasta 80,
𝑒𝑙𝑒𝑚𝑒𝑛𝑡 = 𝐺 = 0: 10: 80 ;
3
4 entonces la comparación es falsa ¡y se ejecutan los enunciados
5 dentro del enunciado if! En general, los enunciados if funcionan
6 mejor cuando tratan con escalares.
8
La estructura if/else
Cuando se usa el comando find con una matriz
bidimensional, usa un esquema de numeración de elemento que El if simple le permite ejecutar una serie de enunciados si una
opera en cada columna una a la vez. condición es verdadera y saltar dichos pasos si la condición es
Además de find, MATLAB ofrece otras dos funciones falsa. La cláusula else le permite ejecutar un conjunto de
lógicas: all y any. La función all verifica si una condición enunciados si la comparación es verdadera y un conjunto
lógica es verdadera para todo miembro de un arreglo, y la diferente de enunciados si la comparación es falsa. Suponga que
función any verifica si una condición lógica es verdadera para usted quiere sacar el logaritmo de una variable x. Usted sabe,
algún miembro de un arreglo. Se puede consultar la función por las clases de álgebra básica, que la entrada a la función log
interna help de MATLAB para más información. debe ser mayor a 0. A continuación hay un conjunto de
enunciados if/else que calculan el logaritmo si la entrada es
positiva y envía un mensaje de error si la entrada a la función
es 0 o negativa:
USO DE FUNCIONES EN MATLAB 5

En éste, MATLAB primero verifica si age. Si la comparación


𝐼𝑓 𝑥 > 0 es verdadera, el programa ejecuta la siguiente línea o conjunto
𝑦 = log (𝑥) de líneas, despliega el mensaje Lo siento. Tendrá que esperar,
𝑒𝑙𝑠𝑒 y luego sale de la estructura if. Si la comparación es falsa,
𝑑𝑖𝑠𝑝(′𝐿𝑎 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 𝑎 𝑙𝑎 𝑓𝑢𝑛𝑐𝑖ó𝑛 log 𝑑𝑒𝑏𝑒 𝑠𝑒𝑟 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑎 ′) MATLAB se mueve a la siguiente comparación elseif y esta vez
𝑒𝑛𝑑 verifica si age<18. El programa continúa a través de la
estructura if hasta que finalmente encuentra una comparación
Cuando x es un escalar, esto es fácil de interpretar. Sin verdadera o hasta que encuentra else. Note que la línea else no
embargo, cuando x es una matriz, la comparación es verdadera incluye una comparación, pues se ejecuta si el elseif
sólo si es verdadera para todo elemento en la matriz. De modo inmediatamente anterior es falso.
que, si Esta estructura es fácil de interpretar si age es un escalar. Si
es una matriz, la comparación debe ser verdadera para todo
𝑥 = 0: 0.5: 2; elemento en la matriz. Considere esta matriz de edad:

entonces los elementos en la matriz no son todos mayores a 0. 𝑎𝑔𝑒 = [15, 17, 25, 55, 75]
Por tanto, MATLAB brinca a la porción else del enunciado y
despliega el mensaje de error. El enunciado if/else La primera comparación, is age<16 es falsa, porque no es
probablemente está mejor confinado para usar con escalares, verdad para todo elemento en el arreglo. La segunda
aunque puede encontrar que es de uso limitado con vectores. comparación, elseif age<18, también es falsa. La tercera
comparación, elseif age<70, es falsa también, pues no todas las
Sugerencia: edades están por abajo de 70. El resultado es Los conductores
MATLAB incluye una función llamada beep que hace que mayores de 70 requieren una licencia especial, un resultado que
la computadora “suene” al usuario. Puede usar esta función no les gustará a los otros conductores. [1]
para alertar al usuario de un error. Por ejemplo, en la cláusula
if/else, podría agregar un beep a la porción del código que Sugerencia:
incluye un enunciado de error: Un error común que cometen los nuevos programadores
cuando usan enunciados if es especificar en exceso los
𝐼𝑓 𝑥 > 0 criterios. En el ejemplo anterior es suficiente establecer que
𝑦 = log (𝑥) age < 18 en la segunda cláusula if, porque age no puede ser
𝑒𝑙𝑠𝑒 menor que 16 y además satisfacer este enunciado. No
𝑏𝑒𝑒𝑝 necesita especificar age < 18 y age >= 16. Si especifica en
exceso los criterios, se arriesga a definir una ruta de cálculo
𝑑𝑖𝑠𝑝(′𝐿𝑎 𝑒𝑛𝑡𝑟𝑎𝑑𝑎 𝑎 𝑙𝑎 𝑓𝑢𝑛𝑐𝑖ó𝑛 log 𝑑𝑒𝑏𝑒 𝑠𝑒𝑟 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑎 ′) para la que no hay respuesta correcta. Por ejemplo, en el
𝑒𝑛𝑑 código:

𝐼𝑓 𝑎𝑔𝑒 < 16
La estructura elseif 𝑑𝑖𝑠𝑝(′𝐿𝑜 𝑠𝑖𝑒𝑛𝑡𝑜. 𝑇𝑒𝑛𝑑𝑟á 𝑞𝑢𝑒 𝑒𝑠𝑝𝑒𝑟𝑎𝑟′)
𝑒𝑙𝑠𝑒 𝑖𝑓 𝑎𝑔𝑒 < 18 & 𝑎𝑔𝑒 > 16
Cuando se anidan varios niveles de enunciados if/else, puede 𝑑𝑖𝑠𝑝(′𝑃𝑢𝑒𝑑𝑒 𝑜𝑏𝑡𝑒𝑛𝑒𝑟 𝑢𝑛 𝑝𝑒𝑟𝑚𝑖𝑠𝑜 𝑝𝑎𝑟𝑎 𝑐𝑜𝑛𝑑𝑢𝑐𝑖𝑟′)
ser difícil determinar cuáles expresiones lógicas deben ser 𝑒𝑙𝑠𝑒𝑖𝑓 𝑎𝑔𝑒 < 70 & 𝑎𝑔𝑒 > 18
verdaderas (o falsas) con la finalidad de ejecutar cada conjunto 𝑑𝑖𝑠𝑝(′𝑃𝑢𝑒𝑑𝑒 𝑜𝑏𝑡𝑒𝑛𝑒𝑟 𝑢𝑛𝑎 𝑙𝑖𝑐𝑒𝑛𝑐𝑖𝑎 𝑒𝑠𝑡á𝑛𝑑𝑎𝑟′)
de enunciados. La función elseif le permite comprobar criterios 𝑒𝑙𝑠𝑒𝑖𝑓 𝑎𝑔𝑒 > 70
múltiples mientras se mantiene el código fácil de leer.
Considere las siguientes líneas de código que evalúan si se 𝑑𝑖𝑠𝑝(′𝐿𝑜𝑠 𝑐𝑜𝑛𝑑𝑢𝑐𝑡𝑜𝑟𝑒𝑠 𝑚𝑎𝑦𝑜𝑟𝑒𝑠 𝑑𝑒 70 𝑟𝑒𝑞𝑢𝑖𝑒𝑟𝑒𝑛 𝑢𝑛𝑎 𝑙𝑖𝑐𝑒𝑛𝑐𝑖𝑎 𝑒𝑠𝑝𝑒
emite una licencia de conductor, con base en la edad del 𝑒𝑛𝑑
solicitante: no hay opción correcta para age = 16, 18 o 70.

𝐼𝑓 𝑎𝑔𝑒 < 16
𝑑𝑖𝑠𝑝(′𝐿𝑜 𝑠𝑖𝑒𝑛𝑡𝑜. 𝑇𝑒𝑛𝑑𝑟á 𝑞𝑢𝑒 𝑒𝑠𝑝𝑒𝑟𝑎𝑟′) En general, las estructuras elseif funcionan bien para escalares,
𝑒𝑙𝑠𝑒 𝑖𝑓 𝑎𝑔𝑒 < 18 pero probablemente find es mejor opción para matrices.
𝑑𝑖𝑠𝑝(′𝑃𝑢𝑒𝑑𝑒 𝑜𝑏𝑡𝑒𝑛𝑒𝑟 𝑢𝑛 𝑝𝑒𝑟𝑚𝑖𝑠𝑜 𝑝𝑎𝑟𝑎 𝑐𝑜𝑛𝑑𝑢𝑐𝑖𝑟′)
𝑒𝑙𝑠𝑒𝑖𝑓 𝑎𝑔𝑒 < 70 Switch y case
𝑑𝑖𝑠𝑝(′𝑃𝑢𝑒𝑑𝑒 𝑜𝑏𝑡𝑒𝑛𝑒𝑟 𝑢𝑛𝑎 𝑙𝑖𝑐𝑒𝑛𝑐𝑖𝑎 𝑒𝑠𝑡á𝑛𝑑𝑎𝑟′)
𝑒𝑙𝑠𝑒 La estructura switch/case se usa con frecuencia cuando existe
una serie de opciones de ruta de programación para una variable
𝑑𝑖𝑠𝑝(′𝐿𝑜𝑠 𝑐𝑜𝑛𝑑𝑢𝑐𝑡𝑜𝑟𝑒𝑠 𝑚𝑎𝑦𝑜𝑟𝑒𝑠 𝑑𝑒 70 𝑟𝑒𝑞𝑢𝑖𝑒𝑟𝑒𝑛 𝑢𝑛𝑎 𝑙𝑖𝑐𝑒𝑛𝑐𝑖𝑎dada, dependiendo de su valor. Switch/case es similar a
𝑒𝑠𝑝𝑒𝑐𝑖𝑎𝑙′)
𝑒𝑛𝑑 if/else/elseif. De hecho, cualquier cosa que pueda hacer con
switch/case se podría hacer con if/else/elseif. Sin embargo, el
código es un poco más fácil de leer con switch/case, una
USO DE FUNCIONES EN MATLAB 6

estructura que le permite elegir entre múltiples salidas, con base La porción otherwise de la estructura switch/case no se
en ciertos criterios. Ésta es una importante distinción entre requiere para que funcione la estructura. Sin embargo, debe
switch/case y elseif. Los criterios pueden ser un escalar (un incluirla si hay alguna forma de que el usuario pueda ingresar
número) o una cadena. En la práctica se usa más con cadenas un valor no igual a uno de los casos. Las estructuras case/switch
que con números. La estructura de switch/case es: tienen diagramas de flujo exactamente iguales a las estructuras
if/else. [1]
𝑠𝑤𝑖𝑡𝑐ℎ 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒
𝑐𝑎𝑠𝑒 𝑜𝑝𝑡𝑖𝑜𝑛1 Sugerencia:
𝑐ó𝑑𝑖𝑔𝑜 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟 𝑠𝑖 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎 𝑙𝑎 𝑜𝑝𝑐𝑖ó𝑛 1
𝑐𝑎𝑠𝑒 𝑜𝑝𝑡𝑖𝑜𝑛 2 Si usted es programador C, puede haber usado switch/case
𝑐ó𝑑𝑖𝑔𝑜 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟 𝑠𝑖 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎 𝑙𝑎 𝑜𝑝𝑐𝑖ó𝑛 1 en dicho lenguaje. Una diferencia importante en MATLAB
𝑐𝑎𝑠𝑒 𝑜𝑝𝑡𝑖𝑜𝑛_𝑛 es que, una vez que se encuentra un caso “verdadero”, el
𝑐ó𝑑𝑖𝑔𝑜 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟 𝑠𝑖 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎 𝑙𝑎 𝑜𝑝𝑐𝑖ó𝑛 2 programa no verifica los otros casos.
𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝑐ó𝑑𝑖𝑔𝑜 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟 𝑠𝑖 𝑙𝑎 𝑣𝑎𝑟𝑖𝑎𝑏𝑙𝑒 𝑛𝑜 𝑒𝑠 𝑖𝑔𝑢𝑎𝑙 𝑎
𝑐𝑢𝑎𝑙𝑞𝑢𝑖𝑒𝑟𝑎 𝑑𝑒 𝑙𝑎𝑠 𝑜𝑝𝑐𝑖𝑜𝑛𝑒𝑠 Menú
𝑒𝑛𝑑
La función menu se usa con frecuencia en conjunto con una
He aquí un ejemplo: suponga que quiere crear una función estructura switch/case. Esta función hace que aparezca un
que diga al usuario cuál es la tarifa aérea a una de tres diferentes recuadro de menú en la pantalla, con una serie de botones
ciudades: definidos por el programador:

𝑐𝑖𝑡𝑦 𝑖𝑛𝑝𝑢𝑡 =
= 𝑖𝑛𝑝𝑢𝑡 (′𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑢𝑛𝑎 𝑐𝑖𝑢𝑑𝑎𝑑 𝑒𝑛 𝑎𝑝ó𝑠𝑡𝑟𝑜𝑓𝑒𝑠′) 𝑚𝑒𝑛𝑢(′𝑀𝑒𝑛𝑠𝑎𝑗𝑒 𝑎𝑙 𝑢𝑠𝑢𝑎𝑟𝑖𝑜 ′ ,′ 𝑡𝑒𝑥𝑡𝑜 𝑝𝑎𝑟𝑎 𝑏𝑜𝑡ó𝑛 1′ ,′ 𝑡𝑒𝑥𝑡𝑜 𝑝𝑎𝑟𝑎 𝑏𝑜𝑡ó𝑛 2′ , 𝑒𝑡𝑐. )
𝑠𝑤𝑖𝑡𝑐ℎ 𝑐𝑖𝑡𝑦
𝑐𝑎𝑠𝑒 ′𝐵𝑜𝑠𝑡𝑜𝑛′ Se puede usar la opción menu en el ejemplo de tarifa aérea
𝑑𝑖𝑠𝑝 (′$345′) anterior para asegurar que el usuario elija sólo ciudades de las
𝑐𝑎𝑠𝑒 ′𝐷𝑒𝑛𝑣𝑒𝑟′ que se tiene información. Esto también significa que no se
𝑑𝑖𝑠𝑝 (′𝑄𝑢é𝑑𝑒𝑠𝑒 𝑒𝑛 𝑐𝑎𝑠𝑎 𝑦 𝑒𝑠𝑡𝑢𝑑𝑖𝑒′) necesita la sintaxis otherwise, pues no es posible elegir una
𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 ciudad que “no esté en archivo”. [1]
𝑑𝑖𝑠𝑝 (′𝑁𝑜 𝑒𝑛 𝑎𝑟𝑐ℎ𝑖𝑣𝑜′)
𝑒𝑛𝑑 𝑐𝑖𝑡𝑦 =
𝑚𝑒𝑛𝑢 (′𝑆𝑒𝑙𝑒𝑐𝑐𝑖𝑜𝑛𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑢𝑛𝑎 𝑐𝑖𝑢𝑑𝑎𝑑 𝑑𝑒𝑙 𝑚𝑒𝑛ú:′ ,′ 𝐵𝑜𝑠𝑡𝑜𝑛′ ,′ 𝐷𝑒𝑛𝑣𝑒𝑟 ′ , ′𝐻𝑜𝑛𝑜𝑙𝑢𝑙𝑢′)
𝑠𝑤𝑖𝑡𝑐ℎ 𝑐𝑖𝑡𝑦
Si al correr este script replica 'Boston' en el prompt, MATLAB
𝑐𝑎𝑠𝑒 1
responde:
𝑑𝑖𝑠𝑝 (′$345′)
𝑐𝑖𝑡𝑦 = 𝑐𝑎𝑠𝑒 2
𝐵𝑜𝑠𝑡𝑜𝑛 𝑑𝑖𝑠𝑝 (′$150′ )
$345 𝑐𝑎𝑠𝑒 3
𝑑𝑖𝑠𝑝 (′𝑄𝑢é𝑑𝑒𝑠𝑒 𝑒𝑛 𝑐𝑎𝑠𝑎 𝑦 𝑒𝑠𝑡𝑢𝑑𝑖𝑒′)
Puede decir al comando input que espere una cadena al agregar 𝑒𝑛𝑑
's' en un segundo campo. Esto libera al usuario del abrumador
requisito de agregar apóstrofes alrededor de cualquier cadena Note que un caso número sustituyó la cadena en cada línea
de entrada. Con la ‘s’ agregada, el código precedente ahora se case. Cuando se ejecuta el script, aparece el recuadro menú y
lee como sigue: espera que el usuario seleccione uno de los botones. Si se eligió
Honolulu, MATLAB responderá:
𝑐𝑖𝑡𝑦
= 𝑖𝑛𝑝𝑢𝑡 (′𝐼𝑛𝑔𝑟𝑒𝑠𝑒 𝑒𝑙 𝑛𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑢𝑛𝑎 𝑐𝑖𝑢𝑑𝑎𝑑 𝑒𝑛 𝑎𝑝ó𝑠𝑡𝑟𝑜𝑓𝑒𝑠′) 𝑐𝑖𝑡𝑦 =
𝑠𝑤𝑖𝑡𝑐ℎ 𝑐𝑖𝑡𝑦 3
𝑐𝑎𝑠𝑒 ′𝐵𝑜𝑠𝑡𝑜𝑛′ 𝑄𝑢é𝑑𝑒𝑠𝑒 𝑒𝑛 𝑐𝑎𝑠𝑎 𝑦 𝑒𝑠𝑡𝑢𝑑𝑖𝑒
𝑑𝑖𝑠𝑝 (′$345′)
𝑐𝑎𝑠𝑒 ′𝐷𝑒𝑛𝑣𝑒𝑟′ Desde luego, podría suprimir la salida del comando disp, que
𝑑𝑖𝑠𝑝 (′$150′ ) se incluyó aquí por claridad.
𝑐𝑎𝑠𝑒 ′𝐻𝑜𝑛𝑜𝑙𝑢𝑙𝑢′
𝑑𝑖𝑠𝑝 (′𝑄𝑢é𝑑𝑒𝑠𝑒 𝑒𝑛 𝑐𝑎𝑠𝑎 𝑦 𝑒𝑠𝑡𝑢𝑑𝑖𝑒′) E. Ciclos Repetitivos: Bucles
𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝑑𝑖𝑠𝑝 (′𝑁𝑜 𝑒𝑛 𝑎𝑟𝑐ℎ𝑖𝑣𝑜′)
Los bucles (loops) se usan cuando necesita repetir un
𝑒𝑛𝑑
conjunto de instrucciones muchas veces. MATLAB soporta dos
tipos diferentes de bucles: el bucle for y el bucle while. Los
USO DE FUNCIONES EN MATLAB 7

bucles for son la opción más sencilla cuando usted sabe cuántas a 2 y se calcula 52. La última vez en el bucle, k es igual a 3 y se
veces necesita repetir el bucle. Los bucles while son las calcula 53. Puesto que los enunciados en el bucle se repiten tres
opciones más sencillas cuando necesita mantener la repetición veces, el valor de a se despliega tres veces en la ventana de
de las instrucciones hasta que se satisface un criterio. Si tiene comandos:
experiencia de programación previa, puede estar tentado a usar
bucles de manera extensa. Sin embargo, se pueden componer 𝑎=
programas MATLAB que eviten los bucles, ya sea mediante el 25
comando find o mediante la vectorización del código. (En la 𝑎=
vectorización se opera sobre vectores enteros a la vez, en lugar 25
de un elemento a la vez.) Es buena idea evitar los bucles 𝑎=
siempre que sea posible, porque los programas resultantes 125
corren más rápido y con frecuencia requieren menos pasos de
programación. [1] Aunque k se definió como una matriz en la primera línea del
bucle for, dado que k es un número índice cuando se usa en el
Bucles for bucle, puede ser igual sólo a un valor a la vez. Después de
terminar de ejecutar el bucle, si se llama k, sólo tiene un valor:
La estructura del bucle for es simple. La primera línea el valor del índice la última vez en el bucle. Para el ejemplo
identifica el bucle y define un índice, que es un número que anterior,
cambia en cada paso a través del bucle. Después de la línea de
identificación viene el grupo de comandos que se quiere 𝑘
ejecutar. Finalmente, la terminación del bucle se identifica
mediante el comando end. [1] Regresa
En resumen, se tiene:
𝑘=
𝑓𝑜𝑟 𝑖𝑛𝑑𝑒𝑥 = [𝑚𝑎𝑡𝑟𝑖𝑧] 3
𝑐𝑜𝑚𝑎𝑛𝑑𝑜𝑠 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟
𝑒𝑛𝑑 Nótese que k se menciona como una matriz 1฀3฀1 en la
ventana del área de trabajo. Una de las formas más comunes de
El bucle se ejecuta una vez para cada elemento de la matriz usar un bucle for es para definir una nueva matriz. Considere,
índice identificada en la primera línea. He aquí un ejemplo por ejemplo, el código:
realmente simple:
𝑓𝑜𝑟 𝑘 = 1: 5
𝑓𝑜𝑟 𝑘 = [1, 3, 7] 𝑎(𝑘) = 𝑘^2
𝑘 𝑒𝑛𝑑
𝑒𝑛𝑑
Este bucle define una nueva matriz, a, un elemento a la vez.
Este código regresa: Dado que el programa repite su conjunto de instrucciones cinco
veces, a la matriz a se agrega un nuevo elemento cada vez a lo
𝑘= largo del bucle con la siguiente salida en la ventana de
1 comandos:
𝑘=
3 𝑎=
𝑘= 1
7 𝑎=
1 4
En este caso, el índice es k. Los programadores usan con 𝑎=
frecuencia k como una variable índice por cuestiones de estilo. 1 4 9
La matriz índice también se puede definir con el operador dos 𝑎=
puntos o, de hecho, también en algunas otras formas. He aquí 1 4 9 16
un ejemplo de código que encuentra el valor de 5 elevado a 𝑎=
potencias entre 1 y 3: 1 4 9 16 25

𝑓𝑜𝑟 𝑘 = 1: 3 Sugerencia:
𝑎 = 5^𝑘 La mayoría de los programas de cómputo no tienen la
𝑒𝑛𝑑 habilidad de MATLAB para manipular matrices tan
fácilmente; por tanto, se apoyan en bucles similares al recién
En la primera línea, el índice, k, se define como la matriz presentado para definir arreglos. Sería más fácil crear el
[1,2,3]. La primera vez en el bucle, a k se le asigna un valor de vector a en MATLAB con el código:
1 y se calcula 51. Luego se repite el bucle, pero ahora k es igual 𝑘 = 1: 5
USO DE FUNCIONES EN MATLAB 8

𝑎 = 𝑘. ^2 - La primera línea en el bucle define el número de veces


que se repetirán los bucles mediante un número índice.
Que regresa - El índice de un bucle for debe ser una variable. (El
𝑘= índice es el número que cambia cada vez a lo largo del
1 2 3 4 5 bucle.) Aunque k con frecuencia se usa como el
𝑎= símbolo para el índice, se puede emplear cualquier
1 4 9 16 25 nombre de variable. El uso de k es cuestión de estilo.
- Cualquiera de las técnicas aprendidas para definir una
Éste es un ejemplo de vectorización del código.
matriz se puede usar para definir la matriz índice. Un
enfoque común es usar el operador dos puntos, como
en:
Otro uso común para un bucle for es combinarlo con un
enunciado if y determinar cuántas veces algo es verdadero. Por 𝑓𝑜𝑟 𝑖𝑛𝑑𝑒𝑥 = 𝑠𝑡𝑎𝑟𝑡: 𝑖𝑛𝑐: 𝑓𝑖𝑛𝑎𝑙
ejemplo, en la lista de puntajes de examen que se muestra en la
primera línea, ¿cuántos están por arriba de 90? - Si la expresión es un vector fila, los elementos se usan
uno a la vez una vez cada que se les pasa por el bucle.
𝑠𝑐𝑜𝑟𝑒𝑠 = [76, 45, 98, 97];
- Si la expresión es una matriz (esta alternativa no es
𝑐𝑜𝑢𝑛𝑡 = 0
común), cada vez que pasa por el bucle el índice
𝑓𝑜𝑟 𝑘 = 1: 𝑙𝑒𝑛𝑔𝑡ℎ(𝑠𝑐𝑜𝑟𝑒𝑠)
contendrá la siguiente columna en la matriz. ¡Esto
𝑖𝑓 𝑠𝑐𝑜𝑟𝑒𝑠(𝑘) > 90
𝑐𝑜𝑢𝑛𝑡 = 𝑐𝑜𝑢𝑛𝑡 + 1 significa que el índice será un vector columna!
𝑒𝑛𝑑 - Una vez que completa el bucle for, el índice es el
𝑒𝑛𝑑 último valor utilizado.
𝑑𝑖𝑠𝑝 (𝑐𝑜𝑢𝑛𝑡) - Con frecuencia se evitan los bucles for al vectorizar el
código.
Cada vez que se activa el bucle, si el puntaje es mayor que
90, el contador aumenta 1. La mayoría de las veces se crean El diagrama de flujo básico para un bucle for incluye un
bucles for que usan una matriz índice que es una sola fila. Sin diamante que refleja el hecho de que un bucle for comienza
embargo, si en la especificación de índice se define una matriz cada paso comprobando si hay un nuevo valor en la matriz
bidimensional, MATLAB usa toda una columna como el índice índice. Si no lo hay, el bucle termina y el programa continúa
cada vez que pasa por el bucle. Por ejemplo, suponga que se con los enunciados después del bucle. [1]
define el índice como:
Bucles while
1 2 3
𝑘 = [1 4 9] Los bucles while son similares a los bucles for. La gran
1 8 27 diferencia es la forma en que MATLAB decide cuántas veces
repetir el bucle. Los bucles while continúan hasta que se
Entonces: satisface algún criterio. El formato para un bucle while es:

𝑓𝑜𝑟 𝑘 = [1, 2, 3; 1, 4, 9; 1, 8, 27] 𝑤ℎ𝑖𝑙𝑒 𝑐𝑟𝑖𝑡𝑒𝑟𝑖𝑜


𝑎 = 𝑘′ 𝑐𝑜𝑚𝑎𝑛𝑑𝑜𝑠 𝑎 𝑒𝑗𝑒𝑐𝑢𝑡𝑎𝑟
𝑒𝑛𝑑 𝑒𝑛𝑑

Regresa He aquí un ejemplo:

𝑎= 𝑘=0
1 1 1 𝑤ℎ𝑖𝑙𝑒 𝑘 < 3
𝑎= 𝑘 =𝑘+1
2 4 8 𝑒𝑛𝑑
𝑎=
3 9 27 En este caso se inicializa un contador, k, antes del bucle.
Entonces el bucle se repite en tanto k sea menor que 3. En cada
Nótese que k se movió cuando se hizo igual a a, de modo que ocasión, k aumenta por 1 a lo largo del bucle, de modo que el
los resultados son filas en lugar de columnas. bucle se repite tres veces, lo que da:
Se puede resumir el uso de los bucles for con las siguientes
reglas: 𝑘=
- El bucle comienza con un enunciado for y termina con 1
la palabra end. 𝑘=
2
USO DE FUNCIONES EN MATLAB 9

𝑘= Se debe recordar los puntajes de examen contados


3 anteriormente en un bucle for. También se les puede contar con
un bucle while:
Se podría usar k como un número índice para definir una
matriz o sólo como un contador. La mayoría de los bucles for 𝑠𝑐𝑜𝑟𝑒𝑠 = [76, 45, 98, 97];
también se pueden codificar como bucles while. Recordando el 𝑐𝑜𝑢𝑛𝑡 = 0
bucle for que se usó para calcular las tres primeras potencias de 𝑘=0
5; el siguiente bucle while logra la misma tarea: 𝑤ℎ𝑖𝑙𝑒 𝑘 < 4
𝑘 =𝑘+1
𝑘=0 𝑖𝑓 𝑠𝑐𝑜𝑟𝑒𝑠(𝑘) > 90
𝑤ℎ𝑖𝑙𝑒 𝑘 < 3 𝑐𝑜𝑢𝑛𝑡 = 𝑐𝑜𝑢𝑛𝑡 + 1
𝑘 =𝑘+1 𝑒𝑛𝑑
𝑎(𝑘) = 5^𝑘 𝑒𝑛𝑑
𝑒𝑛𝑑 𝑑𝑖𝑠𝑝 (𝑐𝑜𝑢𝑛𝑡)

El código regresa: La variable count se usa para contar cuántos valores son
mayores que 90. La variable k se usa para contar cuántas veces
𝑎= se ejecuta el bucle. El diagrama de flujo básico para un bucle
5 while es el mismo que el del bucle for. [1]
𝑎=
5 25 Sugerencia
𝑎= La variable que se usa para controlar el bucle while se debe
5 25 125 actualizar cada vez que pase por el bucle. Si no, generará un
bucle interminable. Cuando un cálculo toma demasiado
Cada vez que se pasa por el bucle, se agrega otro elemento a la tiempo para completarse, puede confirmar que la
matriz a. Como otro ejemplo, inicialice primero a: computadora realmente trabaja en él al observar el indicador
“busy”, en la esquina inferior izquierda. Si quiere salir
𝑎=0 manualmente del cálculo, escriba ctrl c.

Entonces encuentre el primer múltiplo de 3 que es mayor que Sugerencia


10: Muchos textos y manuales de computadora indican la tecla
control con el símbolo ^. Esto es confuso, en el mejor de los
𝑤ℎ𝑖𝑙𝑒 (𝑎 < 10) casos. El comando ^c usualmente significa oprimir la tecla
𝑎 =𝑎+3 ctrl y la tecla c al mismo tiempo.
𝑒𝑛𝑑
Break y continue
La primera vez que pase por el bucle, 𝒂 es igual a 0, de modo
que la comparación es verdadera. Se ejecuta el siguiente El comando break se puede usar para terminar un bucle
enunciado (𝒂 = 𝒂 + 𝟑) y el bucle se repite. Esta vez 𝒂 es prematuramente (mientras que la comparación en la primera
igual a 3 y la condición todavía es verdadera, de modo que la línea todavía es verdadera). Un enunciado break provocará la
ejecución continúa. Sucesivamente, se tiene: terminación de la parte más pequeña que encierre un bucle
while o for. He aquí un ejemplo:
𝑎=
3 𝑛=0
𝑎= 𝑤ℎ𝑖𝑙𝑒(𝑛 < 10)
6 𝑛 = 𝑛 + 1;
𝑎= 𝑎 = 𝑖𝑛𝑝𝑢𝑡(′𝐼𝑛𝑔𝑟𝑒𝑠𝑒𝑢𝑛 𝑣𝑎𝑙𝑜𝑟 𝑚𝑎𝑦𝑜𝑟 𝑞𝑢𝑒 0: ′);
9 𝑖𝑓(𝑎 ≤ 0)
𝑎= 𝑑𝑖𝑠𝑝 (′𝐷𝑒𝑏𝑒 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑢𝑛 𝑛ú𝑚𝑒𝑟𝑜 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜′)
12 𝑑𝑖𝑠𝑝 (′𝐸𝑠𝑡𝑒 𝑝𝑟𝑜𝑔𝑟𝑎𝑚𝑎 𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑟á′)
𝑏𝑟𝑒𝑎𝑘
La última vez que pasa por el bucle, a comienza como 9 y 𝑒𝑛𝑑
luego se convierte en 12 cuando se agrega 3 a 9. La 𝑑𝑖𝑠𝑝 (′𝐸𝑙 log 𝑛𝑎𝑡𝑢𝑟𝑎𝑙 𝑑𝑒 𝑒𝑠𝑡𝑒 𝑛ú𝑚𝑒𝑟𝑜 𝑒𝑠 ′)
comparación se realiza una última vez, pero, dado que a ahora 𝑑𝑖𝑠𝑝 (log (𝑎))
es igual a 12 (que es mayor que 10), el programa salta al final 𝑒𝑛𝑑
del bucle while y ya no se repite. Los bucles while también se
pueden usar para contar cuántas veces una condición es En este programa, el valor de n se inicializa afuera del bucle.
verdadera al incorporar un enunciado if. Cada vez que se pasa por el bucle, el comando de entrada se usa
para pedir un número positivo. El número se comprueba y, si es
USO DE FUNCIONES EN MATLAB 10

cero o negativo, se envía un mensaje de error a la ventana de coma dentro del bucle sólo para corroborar esta afirmación.
comandos y el programa salta del bucle. Si el valor de a es No olvide que puede detener la ejecución del programa con
positivo, el programa continúa y ocurre otro paso a través del ctrl c.
bucle hasta que n finalmente es mayor que 10. [1]

El comando continue es similar a break; sin embargo, en


lugar de terminar el bucle, el programa sólo salta al paso F. Resumen de los comandos y funciones
siguiente:
TABLA IV
𝑛=0 RESUMEN DE COMANDOS
𝑤ℎ𝑖𝑙𝑒(𝑛 < 10) Comandos y funciones
𝑛 = 𝑛 + 1; all Verifica si un criterio se satisface por todos
𝑎 = 𝑖𝑛𝑝𝑢𝑡(′𝐼𝑛𝑔𝑟𝑒𝑠𝑒𝑢𝑛 𝑣𝑎𝑙𝑜𝑟 𝑚𝑎𝑦𝑜𝑟 𝑞𝑢𝑒 0: ′); los elementos de un arreglo
𝑖𝑓(𝑎 ≤ 0) any Verifica si un criterio se satisface por alguno
𝑑𝑖𝑠𝑝 (′𝐷𝑒𝑏𝑒 𝑖𝑛𝑔𝑟𝑒𝑠𝑎𝑟 𝑢𝑛 𝑛ú𝑚𝑒𝑟𝑜 𝑝𝑜𝑠𝑖𝑡𝑖𝑣𝑜′) de los elementos en el arreglo
𝑑𝑖𝑠𝑝 (′𝐼𝑛𝑡𝑒𝑛𝑡𝑒 𝑑𝑒 𝑛𝑢𝑒𝑣𝑜′) break Provoca que la ejecución de un bucle se
𝑐𝑜𝑛𝑡𝑖𝑛𝑢𝑒 termine
case Ordena las respuestas
𝑒𝑛𝑑
clock Determina el tiempo actual en el reloj del
𝑑𝑖𝑠𝑝 (′𝐸𝑙 log 𝑛𝑎𝑡𝑢𝑟𝑎𝑙 𝑑𝑒 𝑒𝑠𝑡𝑒 𝑛ú𝑚𝑒𝑟𝑜 𝑒𝑠 ′)
CPU
𝑑𝑖𝑠𝑝 (log (𝑎))
continue Termina el paso actual a través de un bucle,
𝑒𝑛𝑑
pero procede al siguiente paso
else Define la ruta si el resultado de un enunciado
En este ejemplo, si ingresa un número negativo, el programa
if es falso
le permite intentar de nuevo, hasta que el valor de n finalmente
elseif Define la ruta si el resultado de un enunciado
sea mayor que 10. [1]
if es falso y especifica una nueva prueba
lógica
¿Cómo mejorar la eficiencia de los bucles?
end Identifica el final de una estructura de control
etime Encuentra el tiempo transcurrido
En general, usar un bucle for (o un bucle while) es menos
find Determina cuáles elementos en una matriz
eficiente en MATLAB que usar operaciones de arreglos. Se
satisfacen el criterio de entrada
puede probar esta afirmación al cronometrar la multiplicación
for Genera una estructura bucle
de los elementos en un arreglo largo. Primero se crea una matriz
if Verifica una condición que resulta en
A que contiene 40,000 unos. El comando ones crea una matriz
verdadero o falso
𝑛𝑥𝑛 de unos:
menu Crea un menú para usar como vehículo de
𝑜𝑛𝑒𝑠(200);
entrada
ones Crea una matriz de uno
El resultado es una matriz 200𝑥200 de unos. Ahora se
otherwise Parte de la estructura de selección de caso
pueden comparar los resultados de multiplicar cada elemento
switch Parte de la estructura de selección de caso
por p, usando primero una multiplicación de arreglo y luego un
tic Inicia una secuencia de cronometrado
bucle for. Puede cronometrar los resultados con el uso de la toc Detiene una secuencia de cronometrado
función clock y la función etime, que mide el tiempo while Genera una estructura bucle
transcurrido. Si tiene una computadora rápida, es posible que Se observa los comandos que se describió con su respectiva función.
requiera usar un arreglo más largo. La estructura del código de
temporización es:
𝑡0 = 𝑐𝑙𝑜𝑐𝑘; III. EJEMPLOS DE APLICACIÓN
𝑐ó𝑑𝑖𝑔𝑜 𝑎 𝑡𝑒𝑚𝑝𝑜𝑟𝑖𝑧𝑎𝑟
𝑒𝑡𝑖𝑚𝑒(𝑐𝑙𝑜𝑐𝑘, 𝑡0) A. Entrada y Operaciones de Salida

La función clock pregunta al reloj de la computadora el Ejercicio 1


tiempo actual. La función etime compara el tiempo actual con
el tiempo inicial y resta los dos valores para dar el tiempo Problema:
transcurrido. [1] Calcular el perímetro y área de un rectángulo.

Sugerencia: Datos:

Asegúrese de suprimir cálculos intermedios cuando use un Base = Definida por el usuario.
bucle. Imprimir dichos valores a la pantalla aumentará Altura = Definida por el usuario.
enormemente la cantidad de tiempo de ejecución. Si tiene
valor, repita el ejemplo anterior, pero borre los puntos y
USO DE FUNCIONES EN MATLAB 11

Modelo: texto, posteriormente "disp" que permite imprimir un resultado,


Declaramos dos variables, cuyos valores serán ingresados en este caso un escalar.
por el usuario y representarán la base y altura del rectángulo. Para ello utilizaremos MatLab:
Definimos las fórmulas para el cálculo del perímetro y área del
rectángulo. Utilizamos "fprintf" para imprimir una cadena de
texto, posteriormente "disp" que permite imprimir un resultado,
en este caso un escalar.

Para ello utilizaremos MatLab:

Resultado:

Conclusiones:
La función de “fprintf” admite vectores. Para ello
Resultado: calculamos y mostramos el alcance para varios ángulos de tiro
a distintas velocidades ingresadas por el usuario.

B. Operadores Relacionales y Lógicos

Ejercicio 1

Problema:
Dados los vectores x = [1 5 2 8 9 0 1] e y = [5 2 2 6 0 0 2],
ejecutar y explicar el significado de los siguientes comandos
Conclusiones: de operadores relacionados:

El área y perímetro del rectángulo dependen exclusivamente a. x > y


de los valores que ingrese el usuario. b. y < x
c. x == y
d. x <= y
Ejercicio 2 e. y >= x

Problema: Datos:
Ingresar una velocidad de disparo e indicar el alcance que
tendrá a determinados ángulos. Vector: x = [1 5 2 8 9 0 1].
Vector: y = [5 2 2 6 0 0 2].
Datos:
Operaciones relacionadas a realizar en los 5 literales.
Velocidad de disparo = Definida por el usuario.
Ángulos = De 15º a 75º con salto de 15º. Modelo:
Declaramos una variable E, que según el número de literal de
Modelo: ejercicio cambiará. Esta variable almacena la operación
Declaramos dos variables, cuyos valores serán ingresados racional propuesta, además para imprimir en pantalla
por el usuario y representarán la base y altura del rectángulo. empleamos “fprintf (‘’)” y el comando “disp ()” para visualizar
Definimos las fórmulas para el cálculo del perímetro y área del el vector de valores lógicos.
rectángulo. Utilizamos "fprintf" para imprimir una cadena de Para ello utilizaremos MatLab:
USO DE FUNCIONES EN MATLAB 12

Datos:
Vector: x1 = [2 7.5 3 4 2 6 9].
Vector: y1 = [2 6 2 5 9 7 9].
Operaciones relacionadas y lógicas a realizar en los 3 literales.

Modelo:
Declaramos una variable R, que según el número de literal
de ejercicio cambiará. Esta variable almacena la operación
racional y lógica propuesta, además para imprimir en pantalla
empleamos “fprintf (‘’)” y el comando “disp ()” para visualizar
el vector de valores lógicos.
Para ello utilizaremos MatLab:

Resultados:

Resultados:

Las operaciones relacionadas > permite evaluar si el valor 1


es mayor que el valor 2. El operador < evalúa si el valor 1 es
menor que el valor 2. El operador == especifica si el valor 1 es
igual al valor 2. El operador <=, permite analizar si el valor 1
es menor o igual al valor 2. Finalmente >= permite analizar si Cabe mencionar que si se cumple cada afirmación nos
el valor 1 es mayor o igual al valor 2. arrojará el valor lógico de “1” y en caso de no cumplirse valores
Cabe mencionar que si se cumple cada afirmación nos arrojará de “0”, siendo verdadero y falso respectivamente.
el valor lógico de “1” y en caso de no cumplirse valores de “0”,
siendo verdadero y falso respectivamente. Conclusiones:
Al realizar cada operación relacionada y lógica, observamos
Conclusiones: que el vector con valores lógicos, indica si es verdadera o falsa
Al realizar cada operación relacionada y lógica, observamos la operación entre los dos vectores. Para el caso de "0" decimos
que el vector con valores lógicos, indica si es verdadera o falsa que es falsa la afirmación y en caso de "1" es verdadera.
la operación entre los dos vectores. Para el caso de "0" decimos
que es falsa la afirmación y en caso de "1" es verdadera.
C. Funciones Lógicas
Ejercicio 2
Ejercicio 1.
Problema:
Dados x1 = [2 7.5 3 4 2 6 9] e y1 = [2 6 2 5 9 7 9], ejecutar y Problema:
explicar el significado de los siguientes comandos de Indicar la posición y la edad de la persona que cumple el
operadores relacionales: requisito principal para sacar la licencia de conducir, debe ser
mayor o igual de 18 años y menor de 66.
a. x1<y1 & ~(x1==y1)
b. (x1 > y1) | (y1 < x1) Datos:
c. (x1 > y1) & (y1 < x1) E= Edad del postulante
USO DE FUNCIONES EN MATLAB 13

Modelo: Para ello utilizaremos MatLab:


Declaramos una variable, cuyos valores son ingresados en un
vector siendo la edad de la persona que se va a verificar el
requisito principal que es la edad. Definimos el vector de 20
posiciones o edades de los 20 postulantes, se utiliza la función
lógica find () y el comando disp el cual me imprimirá el
resultado.

Resultado:

Resultado:

Conclusiones:
El total de dinero del contador y sumador dependerá del
Conclusión usuario para darnos la cantidad de billetes.
Se puede observar la importancia del comando find (x)
Si x es un vector, find devuelve un vector con la misma Ejercicio 2
orientación que x en este caso x es la condición que cumplirá el
postulante de tener desde 18 hasta los 65 años. Problema:
Indicar la etapa de crecimiento en la que se encuentra una
persona según su edad y la tasa de mortalidad
D. Estructura de Selección
Ejercicio 1. Datos:

Problema: E= Edad de una persona


Calcular el número de billetes y monedas de cada
denominación de una cantidad de dinero ingresada. Modelo:
Declaramos una variable, cuyo valor es ingresados por el
Datos: usuario y representarán la edad de la persona a calcular.
Definimos los condicionales definidos en rangos de edades, el
X= Cantidad de dinero cual nos permitirá saber la etapa en la que se encuentra al
D = La denominación de la moneda que se desea contar. finalizar se calculará la tasa de mortalidad con la edad.
C = La denominación de la cantidad de monedas.

Modelo:
Declaramos tres variables, cuyos valores serán ingresados
por el usuario y representarán la cantidad de dinero y las
denominaciones de los billetes o monedas. Definimos un
contador acumulador y un sumador así también un condicional
donde indica que los vectores ingresados son iguales,
posteriormente "disp" que permite imprimir un mensaje
indicando que no está correctamente ingresado.
USO DE FUNCIONES EN MATLAB 14

Conclusiones:
El cálculo y la tasa de mortalidad dependerá de la edad
ingresada por el usuario.

E. Ciclos Repetitivos

Ejercicio 1: Ciclo Repetitivo (FOR)

En este ejemplo se realiza un ingreso de un numero por


teclado y pasamos posteriormente a realizar una suma de los
números pares.

Resultado:

Modelo
Lo que se hace en este ejercicio es primero ingresar un
numero por teclado, después pasamos a inicializar la variable
suma la cual inicia en el número cero y este deberá estar dentro
del ciclo for posteriormente este número que ingresamos pasa
por el ciclo for donde se inicia desde y este se lo procede a
multiplicar por dos para luego guardar ese valor en la variable
suma.

Resultado:

Ejercicio 2: Ciclo Repetitivo (WHILE)

En este ejemplo utilizaremos el bucle while para poder


calcular la factorial de un número que lo pedimos para ingresar
por teclado.
USO DE FUNCIONES EN MATLAB 15

que cero para poder así calcular el logaritmo natural de este


número que se ingrese por teclado. La sentencia break que
ingresamos en el código de este ejercicio hace que termine la
ejecución del bucle while más interno de los que comprenden
dicha sentencia.

Resultado:

Modelo
Lo que se hace en este ejercicio es primero pedir al usuario
el ingreso de un número por teclado para después del número el
cual fue ingresado poder calcular su factorial. Establecemos que
IV. CONCLUSIÓN
el número que se ingreso se guardara en una variable que este
ejemplo fue la variable b, luego se prosigue a la condicion
donde vamos a establecer que para terminar con el ciclo el Matlab puede utilizarse como un lenguaje de programación
número que ingresamos tiene que ser mayor que uno sino no es que incluye todos los elementos necesarios y añade la gran
asi el bucle terminara, adentro de ese bucle se ingresa la resta ventaja de poder incorporar a los programas propios del usuario
de uno del número que ingresamos para luego si poder todas las aplicaciones que ya tiene implementadas, lo cual
multiplicar y obtener su factorial. facilita y simplifica en muchos casos la programación, en donde
se pueden utilizar las funciones lógicas y estructuras de control.
También será de gran utilidad tener en cuenta la estructura
vectorial y matricial del programa.
Resultado: La importancia de esta redacción, es que además de anexar
una lista de comandos en un lenguaje de instrucciones se busca
en general el entendimiento del proceso, las funciones que
ejercen los comandos introducidos por el usuario, tienen una
función determinada, lo que se busca es facilitar estos procesos
que por lo común se resuelvan a papel y lápiz, pero con solo
entender lo que se necesita realizar, se puede lograr estos
cálculos utilizando de manera esencial la herramienta Matlab.

Ejercicio 3: Ciclo Repetitivo (WHILE) con un control


break V. REFERENCIAS

En este ejemplo utilizaremos el bucle while con un control


break para poder calcular el logaritmo natural de un número que [1] H. Moore, MATLAB para ingenieros, Pearson.
lo ingresamos por teclado.

Modelo
En este ejercicio primero pasamos a pedir al usuario el
ingreso de un numero por teclado este número deberá ser mayor
USO DE FUNCIONES EN MATLAB 16

Enríquez, A. Estudiante de la Universidad Villarreal, J. Estudiante de la Universidad


Técnica del Norte de la facultad de Técnica del Norte de la facultad de
Ingeniería en Ciencias Aplicadas de la Ingeniería en Ciencias Aplicadas de la
carrera de Ingeniería en carrera de Ingeniería en
Telecomunicaciones cursando el 3er Telecomunicaciones cursando el 3er
semestre. Nacionalidad ecuatoriana. semestre. Nacionalidad ecuatoriana.
Origen de nacimiento en la ciudad de Origen de nacimiento en la ciudad de
Ibarra. Tulcán.

Guzmán, M. Estudiante de la Universidad Yucailla, V. Estudiante de la Universidad


Técnica del Norte de la facultad de Técnica del Norte de la facultad de
Ingeniería en Ciencias Aplicadas de la Ingeniería en Ciencias Aplicadas de la
carrera de Ingeniería en carrera de Ingeniería en
Telecomunicaciones cursando el 3er Telecomunicaciones cursando el 3er
semestre. Nacionalidad ecuatoriana. semestre. Nacionalidad ecuatoriana.
Origen de nacimiento en la ciudad de Origen de nacimiento en la ciudad de
Cayambe. Tulcán.

También podría gustarte