Vectorización.
En algunos casos resulta necesario realizar
la ejecución de una función varias veces. La solución que primero viene a
nuestra mente es utilizar ciclos y dentro de este colocar el llamado a la
función tal como se muestra
for i= 1:10
y(i) = fun01(i);
end
display(y)
También podríamos pensar en introducir el
ciclo en la función.
MATLAB ofrece otro recurso para llevar a
cabo esta operación, sin hacer uso de ciclos que tienen que manejar una
variable adicional. Este procedimiento se llama vectorización y consiste en
escribir nuestros algoritmos para que puedan realizar las operaciones con
vectores y dado que un vector puede tener longitud cualquier longitud
incluyendo la unidad, la operación se realizara para todos los elementos del arreglo,
Así podemos reescribir la función fun03.m a
partir de fun01.m utilizando vectores.
function
y = fun03(x)
y =
2.*x.^3+4.*x.^2+ 3;
Note que el cambio respecto a la función
fun01 fue agregar en la operaciones de multiplicación y potenciación el punto (.)
para indicar que las operaciones se harán elemento a elemento. Esto se aplicará
también en el caso de la división.
Nuestra función trabajará con un argumento
como
fun03(2)
y la salida es
ans =
35
Así por ejemplo si damos como argumento de
la función fun03 un vector escribimos
x=[1 2 3 4];
fun03(x)
se producirá la salida.
ans =
9 35 93 195
Si fuese una matriz hacemos
A = [1 2; 3 4];
fun03(A)
y obviamente la salida es una matriz
ans =
9 35
93 195
Otra forma de utilizar de hacer llamados a la
función fun03.m vectorizada es
fun03(1:3)
con salida
ans =
9 35 93
Es importante que esta propiedad sea
introducida dentro de las funciones que escribas en MATLAB ya que tendrás la
posibilidad de realizar tus operaciones con cualquier tipo de argumento.
Variables Globales.
Las variables que se utilizan dentro de la
funciones solo serán conocidas localmente cuando se realiza su ejecución, esta
es una propiedad muy buena que nos permite realizar funciones protegiéndonos
contra la redefinición de variables.
Sin embargo existen algunas aplicaciones
donde será necesario hacer uso de variables que puedan convivir en varias
funciones. A estas variables las llamaremos globales y se definirán como tales
de la siguiente manera.
global A.
Ejemplo.
Escriba un programa para graficar una
función cuadrática dada por la función
f(x) =
Ax2 + Bx + C
1.- Escribimos la función grafica.m
function y
=grafica(x)
global A B C
A = 2;
B = 1;
C = 3;
y = fun04(x);
plot(x,y)
Note que las variables A, B y C no tienen un
valor dado y fueron declaradas globales.
2.- Escribir un archivo, por ejemplo fun04.m,
donde además, deben declararse las variables A, B y C.
function
y = fun04(x)
global A;
global B;
global C;
y = A*x.^2+ B.*x +
C;
En este archivo las variables A, B y C
reciben valores y son declaradas como globales.