Introducción a la Programación en MATLAB (C4)

Mauricio Tejada

ILADES - Universidad Alberto Hurtado

Agosto 2017

4. Funciones de Matlab

Matlab provee muchas funciones para realizar operaciones matemáticas y analizar datos. Categorizamos dichas funciones en matriciales, vectoriales y escalares.

Aquí presentamos sólo algunos ejemplos de las funciones que les serán más útiles.

4.1 Funciones Escalares

Las funciones escalares aplican operaciones sobre escalares. Son utilizables en matrices, vectores y escalares. En el caso de los dos primeros, la operaciones se realizan elemento por elemento.

Algunos ejemplos:

  • sin, cos: Seno, Coseno
  • exp, log, log10, abs: Exponencial, logaritmo natural, logaritmo base 10 Valor absoluto
  • sign: Signo (1 para positivo, -1 para negativo)
  • round, ceil, floor: Redondea a entero

Ver help elfun para un listado completo de las funciones elementales de Matlab.

In [1]:
a = 2
expa = exp(a)
a =

     2


expa =

    7.3891
In [2]:
B = [2; 3]
expB = exp(B)
B =

     2
     3


expB =

    7.3891
   20.0855
In [3]:
C = rand(2,2)
logC = log(C)
C =

    0.8147    0.1270
    0.9058    0.9134


logC =

   -0.2049   -2.0637
   -0.0989   -0.0906

4.2 Funciones Vectoriales

Las funciones vectoriales aplican operaciones sobre vectores. Son utilizables en matrices y vectores. En el caso de las primeras, las operaciones se aplican por fila o por columna (por defecto por columna)

Algunos ejemplos:

  • max, min: Máximo, mínimo por columnas
  • sort, sortrows: Ordenar vector, ordenar filas de una matriz
  • sum, prod, cumsum, cumprod: Suma, producto, suma acumulada, producto acumulado
  • mean, std, median, var, cov: Media, desviación estándar, mediana, varianza, covarianza
  • length: Tamaño de un vector

Nota: Las funciones vectoriales, según la operación que realicen tienen diversas opciones y posiblemente más de un output. Ver opciones de cada función usando help funcion.

In [4]:
v = (1:0.5:4)'
vm = max(v)
v =

    1.0000
    1.5000
    2.0000
    2.5000
    3.0000
    3.5000
    4.0000


vm =

     4
  • Ejemplo de uso de funciones con más de un argumento de la función:
In [5]:
G = rand(5,3)
G =

    0.6324    0.9649    0.8003
    0.0975    0.1576    0.1419
    0.2785    0.9706    0.4218
    0.5469    0.9572    0.9157
    0.9575    0.4854    0.7922
In [6]:
mGc = mean(G,1)
mGf = mean(G,2) % Usamos el segundo argumento para cambiar orientación.
mGc =

    0.5026    0.7071    0.6144


mGf =

    0.7992
    0.1323
    0.5570
    0.8066
    0.7450
  • Ejemplo de una función con más de un output:
In [7]:
R=rand(3,2)
[vmax, pos] = max(R)
R =

    0.9595    0.8491
    0.6557    0.9340
    0.0357    0.6787


vmax =

    0.9595    0.9340


pos =

     1     2
In [8]:
x = [1 2 3];
cumsum(x)
ans =

     1     3     6
  • Es siempre útil conocer el tamaño de un vector.
In [9]:
v=rand(1,6)
lv = length(v)
v =

    0.7577    0.7431    0.3922    0.6555    0.1712    0.7060


lv =

     6

4.3 Funciones Matriciales

La funciones matriciales realizan operaciones sobre matrices y sólo son utilizables con este tipo de objetos.

Algunos ejemplos:

  • size: Tamaño de la matriz.
  • inv: Inversa (es mejor utilizar /).
  • eig: Autovalores y autovectores.
  • chol: Descomposición de Cholesky
  • det: Determinante.
  • kron: Producto de kronecker.
  • : Convierte un matriz en un vector columna: vectorizar A(:).
  • reshape(A,filas,columnas): Cambio de dimensión.
  • diag: Diagonal de una matriz (además matriz diagonal si el argumento es un vector).
  • triu, tril: Matrices triangulares, superior e inferior.

Ejemplos:

In [10]:
A = rand(4,2)
[I, J] = size(A)
A =

    0.0318    0.8235
    0.2769    0.6948
    0.0462    0.3171
    0.0971    0.9502


I =

     4


J =

     2
In [11]:
A = 10+2*randn(3,3)
[AVec, AVal] = eig(A)
A =

    6.5770   10.6384    9.9399
    9.7955   10.6257    9.6702
    9.5171    8.2702   11.2554


AVec =

    0.5475    0.8524   -0.1985
    0.6029   -0.3642   -0.6219
    0.5803   -0.3752    0.7575


AVal =

   28.8277         0         0
         0   -2.3421         0
         0         0    1.9725
In [12]:
F = rand(3,4)
daigF = diag(F)
F =

    0.7094    0.6797    0.1190    0.3404
    0.7547    0.6551    0.4984    0.5853
    0.2760    0.1626    0.9597    0.2238


daigF =

    0.7094
    0.6551
    0.9597
In [13]:
newF = reshape(F,2,6)
newF =

    0.7094    0.2760    0.6551    0.1190    0.9597    0.5853
    0.7547    0.6797    0.1626    0.4984    0.3404    0.2238
In [14]:
F(:)
ans =

    0.7094
    0.7547
    0.2760
    0.6797
    0.6551
    0.1626
    0.1190
    0.4984
    0.9597
    0.3404
    0.5853
    0.2238