Está en la página 1de 7

Sesión 1

Cálculo II - S1: Repaso de nociones


básicas de Matlab

El objetivo de esta práctica es doble. Por una parte se tratará de asentar los conocimientos básicos
de Matlab concernientes al manejo de los diferentes tipos de ficheros, y por otra, analizar los
errores más comunes que se cometen a la hora de programar con dicho software.

1.1 Tipos de ficheros


El fichero habitual de trabajo y propio de Matlab es el documento con extensión “.m”. Este tipo
de archivos se encarga de almacenar instrucciones introducidas por el usuario con el objetivo de
ejecutar de forma compacta una serie de órdenes.
Con esta extensión, se pueden diferenciar dos tipos:
• Script: se encarga de almacenar órdenes y ejecutarlas al hacer la llamada a través de la
Command Window (o bien presionando el botón Run). No necesita ningún tipo de cabecera.
Al ejecutar el script todas las variables usadas son guardadas en la ventana Workspace para
poder ser utilizadas posteriormente.
• Función: al igual que el caso anterior, se encarga de almacenar órdenes y ejecutarlas. Necesita
la siguiente cabecera genérica:

function [y1,y2,...,ym] = nombre_funcion(x1,x2,...,xn)

donde cada yi es una salida y cada xj es una entrada. Es recomendable incluir la lı́nea end
al terminar la función.

El número de entradas y salidas puede variar en función de las necesidades, pudiendo llegar a
no tener ninguna de ellas dejándose en ese caso los paréntesis/corchetes vacı́os. Al diferencia
del caso anterior, únicamente quedan guardadas en Workspace aquellas variables que hayan
sido llamadas a la hora de ejecutar la función (ver más adelante).

1
SESIÓN 1. NOCIONES BÁSICAS 2

Existe un tipo especial de fichero cuya extensión es “.p”. Este tipo de ficheros habitualmente son o
bien un script o bien una función, pero están precompilados de tal forma que aunquen no podemos
abrirlo y ver el código que hay en el interior, podemos utilizarlos.

Script
Como ya se ha comentado anteriormente en un script se almacenan órdenes que serán ejecutadas.
Un ejemplo de este tipo de archivos es el mostrado en la figura siguiente:

En este ejemplo se definen dos variables a y b en las dos primeras lı́neas y se calcula una nueva
variable c como la suma de las dos anteriores.
Existen dos formas de ejecutar este tipo de ficheros, la primera es presionando el botón Run y la
segunda es escribiendo el nombre del script en la Command Window. Una vez ejecutado, las tres
variables serán guardadas en Workspace y podrán ser usadas más adelante.

Función
Para este caso hemos creado una función como la que aparece en la siguiente figura:

dicha función tiene dos entradas x1 y x2 y dos salidas y1 e y2. Como podemos observar, al ser x1 y
x2 entradas de la función, ninguna de estas dos variables debe ser declarada dentro de la función
(al contrario que ocurrı́a en el script. En este caso no podemos ejecutar el fichero a través del botón
Run, ya que hay variables que están sin declarar y no pueden ser usadas.

Para este primer ejemplo hacemos una llamada a la función, y damos valores x1 = 1 y x2 = 2 a las
variables de entrada. La forma de llamar a la función desde la Command Window es la siguiente:
>> [y1,y2] = func_mat(1,2);
Otra opción es definir previamente las variables y luego hacer la llamada a la función:
>> x1 = 1;
>> x2 = 2;
>> [y1,y2] = func_mat(x1,x2);

En ambos casos únicamente las variables y1 e y2 son guardadas en Workspace.


SESIÓN 1. NOCIONES BÁSICAS 3

Fichero precompilado
Los ficheros precompilados (aquellos con extensión .p) son ejecutados exactamente igual que si
tuviéramos el fichero original, con la única diferencia que no podemos abrirlos para ver el código.

1.2 Carga de ficheros


En muchas ocasiones necesitamos cargar datos desde un fichero de Matlab con extensión “.mat”.
Estos ficheros almacenan de forma muy cómoda datos que, una vez guardados, nos permiten car-
garlos de forma rápida.

La forma más sencilla de cargar estos ficheros es hacer doble click sobre ellos en Current folder,
sin embargo, esta forma no es para nada aconsejable, ya que aunque guarda las variables
en Workspace, no podrı́amos cargarlas directamente dentro de un script o función. La forma más
recomendable de cargar este tipo de ficheros es mediante la orden load.

Este procedimiento es extrapolable a ficheros de texto que almacenen datos (provenientes de otro
software, por ejemplo).

1.3 Funciones simbólicas vs funciones anónimas


Aunque podemos definir funciones en ficheros con extensión “.m”, también podemos definir fun-
ciones de forma más sencilla en la Command Window, aunque tenemos que tener en cuenta que
este tipo de funciones desaparecerán cuando cerremos Matlab o cuando usemos la orden clear.

El primer método para definir una función es mediante la definición de sus variables de forma
simbólica. Existen dos formas diferentes de definir una función de esta forma:
• Primero definimos nuestra variable simbólica y luego definimos la función directamente. Como
ejemplo, vamos a definir una función que calcule el cuadrado de un número:

>> syms x
>> f = x^2;

Para ejecutar la función debemos usar el comando subs. Vamos a evaluar la función en x = 2,
obteniendo:
>> subs(f,x,2)
ans
4
• La segunda forma consiste en incluir en la definición de la función las variables de las que
depende. Como ejemplo, definimos una función que calcule el cuadrado de un número:

>> syms x
>> g(x) = x^2
SESIÓN 1. NOCIONES BÁSICAS 4

Para ejecutar la función, simplemente incluimos dentro del paréntesis el valor de la variable:

>> g(2)
ans
4
Para ambos casos, si nuestra entrada es un escalar, la salida que nos devuelve será un escalar.

Por otra parte, si la entrada fuera un vector una matriz, la salida serı́a también un vector o matriz
con las mismas dimensiones. No obstante, debemos tener cuidado ya que este tipo de funciones
hacen las operaciones término a término.

El segundo método es mediante la definición de una función anónima. Como ejemplo, vamos a
definir una función que nos calcule el cuadrado de una entrada:

>> f = @(x) x^2;

Para ejecutar esta función simplemente tenemos que hacer la llamada incluyendo el valor de la
variable dentro del paréntesis:

>> f(2)
ans
4

A diferencia de la función simbólica, las funciones anónimas sı́ que tienen en cuenta la dimensión de
la entradas, de tal forma que si las dos entradas son matrices y la función multiplica ambas, la salida
será el producto habitual de matrices. Tenemos que tener en cuenta por lo tanto las dimensiones de
las entradas y, en tal caso, utilizar los operadores oportunos: “.*” en lugar “*” si queremos hacer
la multiplicación término a término, “./” en lugar de “/” si queremos la división, etc.

1.4 Help y errores


Siempre que existan dudas acerca del uso de alguna función de matlab, tenemos a nuestra dis-
posición el comando help. Este comando seguido de una función, nos va a proporcionar toda la
información disponible acerca de la función, es decir, entradas, salidas, opciones, etc. Al final de la
ayuda, podremos abrir un documento (en una ventana nueva) con toda esta información incluyendo
ejemplos de cómo ejecutar la función.

Existe un serie de errores que se cometen de forma habitual y que debemos saber identificar:
• >> 2*x
Undefined function or variable ’x’.
No podemos usar ninguna variable si no la hemos definido previamente.
• >> a = [1 2]; b = [1 1];
>> a*b
Error using * Incorrect dimensions for matrix multiplication..
SESIÓN 1. NOCIONES BÁSICAS 5

Ciertas operaciones matemáticas como la multiplicación, tienes restricciones sobre la di-


mensión de los elementos a multiplicar.
• >> func_mat
Not enough input arguments.
Error in func_mat (line 3)
y1 = x1 + x2;
Las funciones definidas en Matlab necesitan entradas. Si no incluimos el número mı́nimo de
entradas que necesita una función, el software nos devuelve este error
• Podemos incluir subfunciones dentro de un script o dentro de una función en un fichero con
extensión “.m”. Estas funciones se deben incluir al final del documento y se ejecu-
tan de la forma habitual. Podemos incluir tantas subfunciones como queramos siempre que
cumplamos esta norma.
• Nombre del archivo: a la hora de elegir con qué nombre guardamos nuestro fichero, podemos
incluir números, letras y ciertos sı́mbolos como “ ”, sin embargo, debemos tener en cuenta
que el nombre debe comenzar con una letra y no incluir espacios en blanco.
• Carpeta de guardado. Salvo que le indiquemos lo contrario, Matlab únicamente puede ejecutar
ficheros que se encuentren en la ventana Current Folder. Si queremos ejecutar un fichero
guardado en otra ruta, debemos movernos a través de las carpetas hasta que dicho fichero
apareza en la ventana mencionada.
• Nunca hay que copiar en un fichero “.m” las lı́neas de comandos que aparezcan en la Com-
mand Window, ya que esto puede llevar a un error cuando la lı́nea que se está copiando sea,
por ejemplo, la salida de una función.
SESIÓN 1. NOCIONES BÁSICAS 6

1.5 Ejercicios propuestos.


1. Crea una función con una entrada y una salida. La entrada será un número cualquiera y la
salida debe guardar el cuadrado de este número.
2. Crea una función con dos entradas y dos salidas. La primera salida debe almacenar la suma
de ambos números, y la segunda la resta del primero menos el segundo.
3. Crea una función con dos entradas y una salida. La salida debe calcular el primer número
elevado al segundo.
4. Crea una función con tres entradas y dos salidas. Las entradas deben corresponder con los
coeficientes de un polinomio de segundo grado, y las dos salidas deben ser cada una de las
raı́ces del mismo.
5. Crea una función con una entrada y dos salidas. La entrada debe ser un vector con un
número cualquiera de elementos, la primera salida debe almacenar el máximo de este vector,
y la segunda su mı́nimo.
6. Crea una función con dos entradas y una salida. La primera entrada (que debe ser menor
que la segunda) representa el comienzo de un intervalor, la segunda el final. La salida se
corresponde con un vector que tiene como primer elemento la primera entrada, como último
elemento la segunda, y el resto de elementos todos los números enteros comprendidos dentro
de dicho intervalor.
7. Crea una función que tenga dos entradas y una salida. Las entradas deben ser dos vectores
cualesquiera (con el mismo número de elementos) y la salida su producto escalar.
8. Crea una función que tenga dos entradas y una salida. Las entradas deben ser dos vectores
(de tres elementos). La salida de almacenar un vector resultados de realizar el productor
vectorial de la primera entrada por la segunda.
9. Crea una función que tenga dos entradas (vectores) y una salida. La primera entrada repre-
senta la posición en coordenadas cartesianas (x, y, z) de un punto en el espacio, la segunda las
coordenadas cartesianas de uns segundo punto. La salida debe almacenar la distancia entre
ambos puntos.
10. Crea una función que tenga dos entradas y dos salidas. Las dos entradas deben ser las
coordenadas cartesianas (x, y) de un punto, las dos salidas deben ser sus coordenadas polares
(r, θ).
11. Crea una función que tenga dos entradas y dos salidas. Las dos entradas deben ser las
coordenadas (r, θ) de un punto, las dos salidas deben ser sus coordenadas cartesianas (x, y).
12. Crea una función con tres entradas y tres salidas. Las tres entradas deben ser las coordenadas
cartesianas (x, y, z) de un punto y las tres salidas su coordenadas cilı́ndricas (r, θ, z).
13. Crea una función con tres entradas y dos salidas. Las tres entradas deben ser las coordenadas
cartesianas (x, y, z) de un punto. La primera salida debe ser un vector que almacene las tres
coordenadas cilı́ndricas (r, θ, z) de dicho punto, y la segunda, un vector que almacene las tres
coordenadas esféricas (r, θ, ϕ) de dicho punto.
SESIÓN 1. NOCIONES BÁSICAS 7

14. Crea una función con una entrada y dos salidas. La entrada debe ser un vector que almacene
las coordenadas cilı́ndricas (r, θ, z) de un punto. La primera salida debe ser un vector que
almacene las coordenadas cartesianas (x, y, z) de dicho punto y la segunda, un vector que
almacene las coordenas esféricas (r, θ, ϕ) del mismo.
15. Crea una función con tres entradas y seis salidas. Las tres entradas deben representar las
coordenadas esféricas de un punto (r, θ, ϕ). Las tres primeras salidas deben almacenar las
coordenadas cartesianas del mismo (x, y, x) y las tres últimas, sus coordenadas cilı́ndricas
(r, θ, z).
16. Crea una función que calcule la nota media. Debe tener una única salida (tu nota media) y
un número de entradas determinado por ti mismo.

Extra:

1. Crea una función que realice un cambio de coordenadas cualquiera. La función debe tener
una salida y 3 entradas. La primera entrada debe ser un vector con dos o tres componentes
que almacenen las coordenadas de un punto y la salida deben ser un vector de dos o tres
componentes con las nuevas coordenadas de dicho punto. La segunda entrada debe ser un
número:
• Un 1 si las coordenadas introducidas en la primera entrada son cartesianas.
• Un 2 si las coordenadas introducidas en la primera entrada son polares o cilı́ndricas.
• Un 3 si las coordenadas introducidas en la primera entrada son esféricas.
La tercera entrada debe ser un número:
• Un 1 si queremos almacenar en el vector de salida las coordenadas cartesianas corre-
spondientes a las coordenadas introducidas en la primera entrada.
• Un 2 si queremos almacenar en el vector de salida las coordenadas polares o cilı́ndricas
correspondientes a las coordenadas introducidas en la primera entrada.
• Un 3 si queremos almacenar en el vector de salida las coordenadas esféricas correspon-
dientes a las coordenadas introducidas en la primera entrada.

También podría gustarte