FUNCIONES DE LIBRERÍA.
FUNCIONES DE LIBRERÍA.
MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código ejecutable del programa. Estas funciones son particularmente rápidas y eficientes. Existen además funciones definidas en ficheros *.my *.mex9 que vienen con el propio programa o que han sido aportadas por usuarios del mismo. Estas funciones extienden en gran manera las posibilidades del programa. MATLAB dispone también de ficheros *.p, que son los ficheros *.mpre-compilados con la función pcode. Se verán más adelante. Recuérdese que para que MATLAB encuentre una determinada función de usuario el correspondiente fichero-M debe estar en el directorio actual o en uno de los directorios del search path.
Características generales de las funciones de MATLAB.
El concepto de función en MATLAB es semejante al de C y al de otros lenguajes de programación,aunque con algunas diferencias importantes. Al igual que en C, una función tiene nombre, valor de retorno y argumentos. Una función se llamautilizando su nombre en una expresión o utilizándolo como un comando más. Las funciones se pueden definir en ficheros de texto *.m en la forma que se verá más adelante. Considérense los siguientes ejemplos de llamada a funciones: >> [maximo, posmax] = max(x); >> r = sqrt(x^2+y^2) + eps; >> a = cos(alfa) - sin(alfa);
donde se han utilizado algunas funciones matemáticasbien conocidas como el cálculo del valor máximo, el seno, el coseno y la raíz cuadrada. Los nombresde las funciones se han puesto en negrita. Los argumentosde cada función van a continuación del nombre entre paréntesis (y separados por comas si hay más de uno). Los valores de retornoson el resultado de la función y sustituyen a ésta en la expresión donde la función aparece. Una diferencia importante con otros lenguajes es que en MATLAB las funciones pueden tener valores de retorno matriciales múltiples (ya se verá que pueden recogerse en variables ad hoc todos o sólo parte de estos valores de retorno), como en el primero de los ejemplos anteriores. En este caso se calcula el elemento de máximo valor en un vector, y se devuelven dos valores: el valor máximo y la posición que ocupa en el vector. Obsérvese que los 2 valores de retorno se recogen entre corchetes, separados por comas. Una característica de MATLAB es que las funciones que no tienen argumentos no llevan paréntesis, por lo que a simple vista no s iempre son fáciles de distinguir de las simples variables. En la segunda línea de los ejemplos anteriores, epses una función sin argumentos, que devuelve la diferencia entre 1.0 y el número de coma flotante inmediatamente superior. En lo sucesivo el nombre de la función irá seguido de paréntesis si interesa resaltar que la función espera que se le pase uno o más argumentos. Los nombres de las funciones de MATLAB no son palabras reservadas del lenguaje. Es posible crear una variable llamada sino cos, que o cultan las funciones correspondientes. Para poder acceder a las funciones hay que eliminar (clear) las variables del mismo nombre que las ocultan. MATLAB permite que una función tenga un número de argumentos y valores de retorno variable, determinado sólo en tiempo de ejecución.
MATLAB tiene diversos tipos de funciones. A continuación se enumeran los tipos de funciones más importantes, clasificadas según su finalidad: 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 para 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 para procesamiento de señal.
Equivalencia entre comandos y funciones.
Existe una equivalencia entre las funciones y los comandos con argumentos de MATLAB. Así, un comando en la forma, >> comando arg1 arg2 es equivalente a una función con el mismo nombre que el comando a la que los argumentos se le pasan como cadenas de caracteres, >> comando('arg1', 'arg2').
Esta dualidad entre comandos y funciones es sobre todo útil en programación porque permite “construir” los argumentos con las operaciones propias de las cadenas de caracteres.
Funciones matemáticas elementales que operan de modo escalar.
Estas funciones, que comprenden las funciones matemáticas trascendentales y otras funciones básicas,actúan sobre cada elemento de la matriz como si se tratase de un escalar. Se aplican de la misma forma a escalares, vectores y matrices. Algunas de las funciones de este grupo son las siguientes: sin(x) seno cos(x) coseno tan(x) tangente asin(x) arco seno acos(x) arco coseno atan(x) arco tangente (devuelve un ángulo entre -p/2 y +p/2) atan2(x) arco tangente (devuelve un ángulo entre -py +p); se le pasan 2 argumentos, proporcionales al seno y al coseno sinh(x) seno hiperbólico cosh(x) coseno hiperbólico tanh(x) tangente hiperbólica asinh(x) arco seno hiperbólico acosh(x) arco coseno hiperbólico atanh(x) arco tangente hiperbólica log(x) logaritmo natural log10(x) logaritmo decimal exp(x) función exponencial sqrt(x) raíz cuadrada sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un número complejo, devuelve un vector unitario en la misma dirección rem(x,y) resto de la división (2 argumentos que no tienen que ser enteros) mod(x,y) similar a rem(Ver diferencias con el Help) round(x) redondeo hacia el entero más próximo fix(x) redondea hacia el entero más próximo a 0 floor(x) valor entero más próximo hacia -¥ ceil(x) valor entero más próximo hacia +¥ 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 que actúan sobre vectores.
Las siguientes funciones actúan sobre vectores (no sobre matrices ni sobre escalares) [xm,im]=max(x) máximo elemento de un vector. Devuelve el valor máximo xmy la posición que ocupa immin(x) mínimo elemento de un vector. Devuelve el valor mínimo y la posición que ocupa sum(x) suma de los elementos de un vector cumsum(x) devuelve el vector suma acumulativa de los elementos de un vector (cada elemento del resultado es una suma de elementos del original) mean(x) valor medio de los elementos de un vector std(x) desviación típica prod(x) producto de los elementos de un vector cumprod(x) devuelve el vector producto acumulativo de los elementos de un vector [y,i]=sort(x) ordenación de menor a mayor de los elementos de un vector x. Devuelve el vector ordenado y, y un vector icon las posiciones iniciales en xde los elementos en el vector ordenado y.
En realidad estas funciones se pueden aplicar también a matrices, pero en ese casose aplican por separado a cada columna de la matriz, dando como valor de retorno un vector resultado de aplicar la función a cada columna de la matriz considerada como vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar di chas funciones a la matriz traspuesta.
FUNCIONES MATRICIALES ELEMENTALES:
B = A' calcula la traspuesta (conjugada) de la matriz A B = A.' calcula la traspuesta (sin conjugar) de la matriz A v = poly(A) devuelve un vector vcon los coeficientes del polinomio característico de la matriz cuadrada A t = trace(A) devuelve la traza t(suma de los elementos de la diagonal) de una matriz cuadrada A [m,n] = size(A) devuelve el número de filas my de columnas nde una matriz rectangular A n = size(A) devuelve el tamaño de una matriz cuadrada A nf =size(A,1) devuelve el número de filas de A nc = size(A,2) devuelve el número de columnas de A.
FUNCIONES MATRICIALESESPECIALES.
Las funciones exp(), sqrt() y log() se aplican elemento a elemento a las matrices y/o vectores que se les pasan como argumentos.Existen otras funciones similares que tienen también sentido cuando se aplican a una matriz como una única entidad. Estas funciones son las siguientes (se distinguen porque llevan una "m" adicional en el nombre): expm(A) si A=XDX', expm(A) = X*diag(exp(di ag(D)))*X' sqrtm(A) devuelve una matriz que multiplicada por sí misma da la matriz A logm() es la función recíproca de expm(A) .
Aunque no pertenece a esta familia de funciones, se puede considerar que el operador potencia(^) está emparentado con ellas. Así, es posible decir que:
A^n está definida si Aes cuadrada y nun número real. Si nes entero, el resultado se calcula por multiplicaciones sucesivas. Si nes real, el resultado se calcula como: A^n=X*D.^n*X' siendo [X,D]=eig(A).