Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. I NTRODUCCIÓN
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
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)]′ ;
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
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 131 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
𝑎= 𝑘=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
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.
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]
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
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.
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:
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:
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:
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
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:
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.
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