FUNCIONES DE LIBRERÍA

 

 

    MATLAB cuenta con un gran número de funciones implementadas, están las "intrínsecas"  (anexadas al código ejecutable de MATLAB) que son rápidas y eficientes. Existen otras definidas en archivos *.m o  *.mex (funciones de MATLAB o desarrolladas por usuarios). También están los archivos *.p que son los *.m precompilados (ver pcode).

 

    Las funciones trabajan como en cualquier otro lenguaje con algunas diferencias. Estas funciones tienen nombre, valor de retorno y argumentos; la forma de invocarlos es como la de los comandos. Por lo general, las funciones se definen en archivos *.m.

>> [Salida1, Salida2, Salida3, ...] = Nombre(Argumento1, Argumento2, Argumento3, ...)

    A diferencia de muchos lenguajes, MATLAB es capaz de tener varios valores de retorno matriciales. Otra diferencia es que aquellas funciones que no tienen argumentos no llevan paréntesis; lo cual nos lleva a tener mucho cuidado de no confundirlo con alguna variable. Es de mencionar que en el ambiente de MATLAB no hay palabras reservadas; por lo que nosotros podríamos crear variables de nombre lu, sin, etc.

 

    En MATLAB se permite que una función tenga argumentos y valores de retorno variables (determinado en tiempo de ejecución).

    Podemos clasificar a las funciones de MATLAB de la siguiente manera:

1. Funciones matemáticas elementales.

2. Funciones especiales.

3. Funciones matriciales elementales.

4. Funciones matriciales específicas.

5. Funciones para la descomposición y/o factorización de matrices.

6. Funciones de análisis estadístico de datos.

7. Funciones para análisis de polinomios.

8. Funciones para integración de ecuaciones diferenciales ordinarias.

9. Resolución de ecuaciones no-lineales y optimización.

10. Integración numérica.

11. Funciones de "toolboxes" (Procesamiento de señales, etc.).

 

    Para el manejo de las funciones mencionadas anteriormente hemos de hacer énfasis en el hecho de que los argumentos de estas funciones pueden ser expresiones y llamadas a otra función. Así, también, una de las características de MATLAB es la de no modificar los valores de los argumentos; por lo que si el usuario las modifica dentro de la función, no hay de que preocuparse, pues se hicieron copias de estas variables desde el acceso a la función.

 

    Una de las ventajas que ofrece MATLAB en cuanto a programación se refiere, es la de ofrecer una dualidad entre comando y función; pues esto permite elaborar en un programa, los argumentos con operaciones propias de cadenas de caracteres. La dualidad existente se refiere al hecho de que existe una equivalencia entre funciones y comandos con argumentos.

>> comando argumento1 argumento2;     

>> comando( 'argumento1' , 'argumento2');     % Función equivalente al comando anterior.

 

    A continuación daremos un vistazo a las funciones mas conocidas.

Funciones matemáticas elementales para escalares

sin(x) Seno.
cos(x) Coseno.
tan(x) Tangente.
asin(x) Arco seno.
acos(x) Arco coseno.
atan(x) Arco tangente. Angulo entre (-PI/2, PI/2).
atan2(x,y) Arco tangente. Angulo entre (-PI, PI).
sinh(x) Seno hiperbólico.
cosh(x) Coseno hiperbólico.
tanh(x) Tangente hiperbólico.
asinh(x) Arco seno hiperbólico.
acosh(x) Arco coseno hiperbólico.
atanh(x) Arco tangente hiperbólico.
log(x) Logaritmo natural.
log10(x) Logaritmo base 10.
exp(x) Exponencial.
sqrt(x) Raíz cuadrada.
sign(x) -1 si x < 0; 1 si x>0. Sobre complejos regresa vector unitario en la dirección de x.
rem(x,y) Resto de la división.
mod(x,y) Resto de la división.
round(x) Redondeo hacia el entero mas próximo.
fix(x) Redondeo hacia el entero mas próximo a 0.
floor(x) Valor mas próximo hacia -Inf.
ceil(x) Valor mas próximo hacia Inf.
gcd(x) Máximo común divisor.
lcm(x) Mínimo común múltiplo.
real(x) Partes reales.
imag(x) Partes imaginarias.
abs(x) Valores absolutos.
angle(x) Ángulos de fase.

 

Funciones sobre vectores.

[xm,im]=max(x) Máximo elemento de un vector. Devuelve valor y posición.
min(x) Mínimo elemento de un vetor. Devuelve valor y posición.
sum(x) Suma de elementos de un vector.
cumsum(x) Devuelve el vector suma acumulativa de los elementos de un vector.
mean(x) Valor medio de los elementos de un vector.
std(x) Desviación estándar.
prod(x) Producto de los elementos de un vector.
cumprod(x) Producto acumulativo de los elementos de un vector
[y,i]=sort(x) Ordenación de menos a mayor de los elementos de un vetor x. También devuelve vector de antiguas posiciones.

 

 Funciones sobre matrices.

B='A Transpuesta (conjugada) de A.
B=A.' Transpuesta(sin conjugar) de A.
v=poly(A) v es un vector con los coeficientes del polinomio característico de la matriz cuadrada A.
t=trace(A) Traza de una matriz cuadrada A.
[m,n]=size(A) Devuelve el número de filas y columnas de A.
n=size(A) Devuelve el tamaño de una matriz cuadrada A.
exp(A) La exponencial se aplica a cada elementos de A.
sqrt(A) La raíz cuadrada se aplica a cada elemento de A.
log(A) El logaritmo se aplica a cada elemento de A.
expm(A) Si A=XDX', expm(A)=X*diag(exp(diag(D)))*X'
sqrtm(A) Devuelve una matriz que multiplicada por si misma da A
logm(A) Es la función recíproca de expm(A)
A^n Si  A es cuadrada y n real. Potencia de A.
[L,U]=lu(A) Descomposición de Crout (A=LU)
B=inv(A) Inversa de A. B=inv(U)*inv(L)
d=det(A) Determinante de la matriz cuadrada A. det(L)*det(U).
E=rref(A) Reduccion escalonada de A (Eliminación gaussiana con pivotes por columnas).
U=chol(A) Descomposición de Cholesky de matriz simétrica y definida positiva. Solo se utiliza la diagonal y la parte triangular superior de A. Regresa una diagonal superior.
c=rcond(A) Regresa una estimación del recíproco de la condición de A basada en la norma sub-1. A es condicionada si es próximo a 1 y si es a 0 no lo está.
[X,D]=eig(A) Valores propios (diagonal en D) y vectores propios (columnas de X) de una matriz cuadrada A.
[X,D]=eig(A,B) Valores propios (diagonal de D) y vectores propios (columnas de X) del sistema Ax=lBx
[Q,R]=qr() Descomposición QR de una matriz rectangular.
B=null(A) Devuelve una base ortonormal del kernel de la matriz rectangular(A)
Q=orth(A) Las columnas de Q son base ortonormal del espacio de columnas de A. Recordemos que el número de columnas de Q es el rango de A.
[U,D,V]=svd(A) Descomposición de valor singular de A. U y V son ortonormales. D es diagonal y contiene los valores singulares.
B=pinv(A) Pseudoinversa de A.
r=rank(A) Nos devuelve el rango de A.
nor=norm(A) Devuelve la norma sub-2 de A (mayor valor singular).
nor=norm(A,2)  
c=cond(A) Situación numérica de A. Cociente entre el máximo y mínimo valor singular de A.
any(x) Función vectorial. Verifica si alguno de los elementos del vector x cumple una determinada condición.
any(A) Se aplica por separado a cada columna de la matriz A.
all(x) Verifica si todos los elementos de la matriz cumplen una determinada condición.
all(A) Se aplica por separado a cada columna de la matriz A.
find(x) Busca índices correspondientes a elementos que cumplen una determinada condición.
find(A) Si esta función se aplica a la matriz A, realiza la búsqueda en toda la matriz.
isequal(A,B) Devuelve 1 si A=B y 0 en caso contrario.
exist(var) Verifica si la variable var existe.
isnan() Verifica si hay valores NaN.
isinf() Verifica si hay valores Inf.
isfinite() Verifica si los valores son finitos.
isempty() Verifica si un vector o matriz está vacío.
ischar() Verifica si una variable es una cadena de caracteres.
isglobal() Verifica si una variable es global.
issparse() Verifica si una matriz es dispersa.

 

Funciones para cálculos con polinomios.

poly(A) Polinomio característico de la matriz A.
roots(pol) Raíces del polinomio pol.
polyval(pol,x) evaluación del polinomio pol para el valor x. Si x es vector, se realiza para cada valor de x.
polyvalm(pol,A) Evaluación del polinomio pol de la matriz A.
conv(p1,p2) Producto de convolución de 2 polinomios p1 y p2.
[c,r]=deconv(p,q) División del polinomio p por el polinomio q. En c esta el cociente y en r el residuo.
residue(p1,p2) Descompone el cociente entre p1 y p2 en suma de fracciones simples.
polyder(pol) Calcula la derivada de un polinomio.
polyder(p1,p2) Calcula la derivada de producto de polinomios.
polyfit(x,y,n) Calcula los coeficientes de un polinomio p(x) de grado n que se ajusta a los datos p(x(i))~=y(i) en el sentido de mínimo error cuadrático medio.

 

Funciones de función

 

    En MATLAB existe un conjunto de funciones cuyos argumentos son otras funciones. Para trabajar con este tipo de funciones realicemos lo siguiente:

0. Crear un directorio y situarse en el.

1. Hacer click en FILE/New/M-File (se abrirá el Editor y Debugger).

2. Teclear:

function y=funcion1(x)

y=3*(x.^2)-1;

3. Salvar con el nombre  funcion1.m

4. Verificar lo siguiente:

>> x=-1 : 0.1 : 2;

>> plot(x, funcion1(x))         % Función que grafica

>> quad('funcion1',-1,1)       % Área de la función por el método de Simpson.

quad8() Área de la función por Newton-Cotes.
dblquad() Realiza integrales definidas dobles.
fzero() Calcula un cero o una raíz de una función de una variable.
fmin() Calcula el mínimo de una función de una variable.
fmins() Calcula el mínimo de una función de varias variables.
eval('cadena de caracteres') Evalúa la expresión dada como argumento
feval('cadena de caracteres') Evalúa dentro de una función, otra función cuyo nombre esta en la cadena de caracteres
evalin(ws,'expresion') Evalúa expresión en el espacio de trabajo ws.

    Si dentro de una función queremos evaluar la función Calcula(A,b,c) donde el nombre Calcular se envía como argumento en la cadena "nombre", entonces feval(nombre,A,b,c) equivale a Calcula(A,b,c).