PDF de programación - Funciones en Matlab

Imágen de pdf Funciones en Matlab

Funciones en Matlabgráfica de visualizaciones

Publicado el 30 de Agosto del 2018
1.359 visualizaciones desde el 30 de Agosto del 2018
653,7 KB
23 paginas
Creado hace 13a (03/03/2011)
Funciones en MATLAB

Estructura de una función:
function [ parametros_salida ] = nombre_funcion (parametros_entrada)
% comentarios de la descripción de la función
Bloque de instrucciones / cálculos (dentro de los cuales se asignan valores

a los parámetros de salida)

Obs.
• Las variables que fueron declaradas dentro de la función, “viven” sólo en

esa función (estas no existen fuera de ese ámbito). Se dice que dichas
variables son locales a la función.

• Las variables declaradas en el programa como GLOBAL (esto es, las

variables definidas en un script o en el ambiente de trabajo de Matlab), si
son validas dentro de las funciones. Sin embargo, no es una buena
práctica de programación usar variables globales en una función.

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

• Cada función debe ser almacenada en un archivo de extensión m, al igual
que los scripts. La diferencia en el caso de las funciones es que el nombre
del archivo donde está almacenada la función debe ser igual al nombre de
la función.

• Una función puede ser invocada directamente desde la ventana de

comandos de Matlab, dentro de otra función o en un script.

Ejemplo:

DEFINICIÓN DE LA FUNCIÓN

INVOCACIÓN DE LA FUNCIÓN

function yy = func(x,y)
% evaluación de yy = - y + x +1
yy = - y + x + 1

Escrita en un archivo de
de nombre “func.m”

>> yy = func(1,2) → yy = 0

Desde el ambiente
de trabajo de Matlab

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

nargin y nargout

• Si se usan dentro de la función :

nargin es la cantidad de parámetros de entrada en la invocación

de la función.

nargout es la cantidad de parámetros de salida en la invocación

de la función.

• Si se usan fuera de la función :

nargin es la cantidad de parámetros de entrada en la definición

de la función.

nargout es la cantidad de parámetros de salida en la definición

de la función.

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

nargin y nargout

Ejemplo:

DEFINICIÓN DE LA FUNCIÓN

function yy = func(x,y)
% evaluación de yy = - y + x +1
yy = - y + x + 1

Escrita en un archivo de
de nombre “func.m”

>> in = nargin(‘func’) → in = 2
>> out = nargout(‘func’) → out = 1

Desde el ambiente
de trabajo de Matlab

archivo : func.m

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

nargin y nargout

Ejemplo:

Se refiere a la
cantidad de
parámetros de
entrada que se
coloquen al
momento de
invocar la función

Prof. Saúl. Buitrago y Oswaldo Jiménez

archivo : imprime_matriz.m

Funciones en MATLAB

nargin y nargout
En el ejemplo de la lámina anterior, si se invoca la función
imprime_matriz desde el ambiente de trabajo de Matlab de la
siguiente manera:

>> A = [ 1 2 3; 4 5 6];
>> imprime_matriz(A,’result.txt’);

entonces se imprime la matriz A en el archivo de nombre result.txt,
mientras que al invocarla como:

>> A = [ 1 2 3; 4 5 6];
>> imprime_matriz(A);

entonces la matriz se imprime en pantalla.

En el primer caso nargin tomó el valor 2, mientras que en el segundo
caso tomó el valor 1.

Obs. Nótese que una función no tiene por qué tener parámetros de
salida (igual observación vale para los parámetros de entrada).

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

nargin y nargout

Ejemplo:

Se refiere a la
cantidad de
parámetros de
salida que se
coloquen al
momento de
invocar la función

Prof. Saúl. Buitrago y Oswaldo Jiménez

archivo : biseccion_nargout.m

Funciones en MATLAB

nargin y nargout
En el ejemplo de la lámina anterior, si se invoca la función bisección
desde el ambiente de trabajo de Matlab de alguna de las siguiente
maneras, usando f = inline('cos(x)-x')
>> raiz = biseccion(f,0,pi/2,0.01)

raiz =

0.7363

>> [raiz,numIt] = biseccion(f,0,pi/2,0.01)

>> [raiz,numIt,traza] = biseccion(f,0,pi/2,0.01)

0.7363

0.7363

raiz =

numIt =

5

raiz =

numIt =

5
traza =

0.7854 0.3927 0.5890 0.6872 0.7363

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones recursivas
Son aquellas que recurren a si mismas en su declaración (bloque de
instrucciones que la definen), en otras palabras se invocan a sí mismas.
Ejemplo 1: calculo de la potencia n de x, es decir xn

Función no recursiva (calpot)

Función recursiva (calpot_r)

Basado en xn = x * xn-1
Obs. Las 2 funciones producen el mismo resultado, pero las funciones
recursivas en general son más costosas desde el punto de vista de
ejecución y memoria utilizada.

Prof. Saúl. Buitrago y Oswaldo Jiménez

tic; x = calpot(2,500); toc
tic; x = calpot_r(2,500); toc

Funciones en MATLAB

Ejemplo: Cálculo de la integral de un polinomio en un intervalo [a,b] dado.

N: número de subintervalos en [a,b]

h

=

ab

N

area

=

xf
(
i

)

xf
(
i

1+

)

h

+
2

a

xi

xi+1

b

a

xi
+=
i
,0 K=

hi
N
,

xi

xi+1

total

=

h

0

i
=
xf
(2)
+
1

area
xfh
(
(
2
af
)(

(



h

0

N

1




xf
(
i

)

xf
(
i

1
+

)

=

+
2

)

+

L

+

xf
(2

)

+

xf
(

))

=

N

N

1


bf
)(

)

+

+
2

N

1




i

1
=

xf
(
i

)





Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones
En MATLAB, cualquiera de los parámetros de entrada de una función puede
ser, a su vez, una función, la cual es invocada de manera usual en el bloque
de instrucciones de la función que se está definiendo.

Ejemplo:

La función “integral”
aproxima la integral
de una función f dada,
usando el método del
trapecio. Así, la
función f es el primer
parámetro de la
función “integral”.
Nótese la invocación
de la función f en el
cálculo de int

Prof. Saúl. Buitrago y Oswaldo Jiménez

archivo : integral.m

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)
Si ahora se quiere invocar la función “integral” en el ambiente de trabajo de
MATLAB, debe pasársele como primer parámetro otra función. Por ejemplo,
supóngase que se quiere aproximar la integral entre 0 y 1 de la función x2+1.
Si ésta se define en un archivo “func1.m” de la siguiente manera:

function y = func1(x)
y = x.^2 + 1;

entonces podemos invocar a “integral” como:

>> int_aprox = integral(@func1,0,1) → int_aprox = 1.33333333334999

o equivalentemente:

>> g = @func1;
>> int_aprox = integral(g,0,1) → int_aprox = 1.33333333334999

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)
En el caso de funciones cuya definición sea una fórmula, como en el ejemplo
anterior, se puede utilizar lo que se conoce como “funciones anónimas”. Este
método es muy práctico ya que no requiere que la función sea definida en un
archivo .m
En el caso del ejemplo anterior, se puede invocar la función “integral” para
calcular una aproximación de la integral entre 0 y 1 de la función x2+1, de la
siguiente manera:

>> int_aprox = integral(@(x) x.^2+1,0,1) → int_aprox = 1.33333333334999

o equivalentemente:

>> g = @(x) x.^2+1;
>> int_aprox = integral(g,0,1) → int_aprox = 1.33333333334999

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)
En el caso de funciones predefinidas en Matlab (funciones intrínsecas), tales
como sin, cos, exp, etc., se trabaja como en el caso de funciones definidas
en archivos .m. Por ejemplo, una aproximación de la integral de la función
seno en el intervalo [0,pi/2] se obtendría así:

>> int_aprox = integral(@sin,pi/2,0) → int_aprox = 0.99999999997944

o equivalentemente:
>> g = @sin;
>> int_aprox = integral(g, pi/2,0) → int_aprox = 0.99999999997944

Obs: Nótese que en esta invocación de la función “integral”, los extremos del
intervalo de integración fueron pasados en orden inverso respecto a los
ejemplos anteriores. Esto no representa un problema porque lo primero que
se hace en la función “integral” es asegurar que en el parámetro a quede
almacenado el extremo izquierdo del intervalo y en el parámetro b el extremo
derecho.

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)

Obs: En la última instrucción de la función “integral”, destaca la expresión
sum(f(v)), lo cual obliga a que la función parámetro f sea aplicable a vectores.
Es por eso que en la definición de la función “func1”

function y = func1(x)
y = x.^2 + 1;

era estrictamente necesario el uso del operador .^ en lugar de ^ (como
sería en el caso escalar).

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)

Un ejemplo en el cual no se puede usar una función anónima como parámetro
de entrada, sino que es necesario definirla en un archivo .m, es el siguiente:

xf
)(

=

1


x


2

+

1

x
si
1
0
<≤−
x
0si
1
≤≤

Se define la función “funcion_a_trozos” en el archivo “funcion_a_trozos.m”
como

function y = funcion_a_trozos(x)
y = zeros(1,length(x));
for i=1:length(x)

if x(i) < 0
y(i) = 1;

y(i) = x(i)^2 + 1;

else

end

end

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Funciones como parámetros de otras funciones (cont.)

Luego, una aproximación de la integral de esta función en el intervalo [-1,1]
es:

>> int_aprox = integral(@funcion_a_trozos,-1,1)

int_aprox =

2.33333333340002.

Prof. Saúl. Buitrago y Oswaldo Jiménez

Funciones en MATLAB

Ejemplo: Cálculo de la integral de un polinomio en un intervalo [a,b] dado.

N: número de intervalos en [a,b]

h

=

ab

N

area

total

=

h


(



af
)(

+
2

bf
)(

)

+

N



i

=

2

ixf
(

)





archivos :
calculo_integral_polinomio.m
const_polinomio.m
integral.m

Prof. Saúl. Buitrago y Oswaldo Jiménez

Graficas en 2 dimensiones

MATLAB tiene funciones básicas para crear gráficos 2D. Estas funciones se
diferencian principalmente por el tipo de escala que utilizan en los ejes de las
abscisas y las ordenadas.

Función “plot”

Crea un gráfico a partir de vectores y/o columnas de matrices, con
escalas lineales sobre ambos ejes.

>> x = [ 1.5, 2.2,
  • Links de descarga
http://lwp-l.com/pdf13271

Comentarios de: Funciones en Matlab (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad