Atom Blog

Como utilizar Global, Rand, Reshape en Matlab


Este post pretende explicar algunas sentencias muy basicas pero que a la vez son muy utiles a lo hora que se necesita trabajar con Matlab, nos concentramos en los siguientes conceptos:

Trabajar con variables tipo "global" en Matlab.
Genear numeros, matrices aleatorias con la funcion "rand".
Redimensionar el tamano de una matriz con la funcion "reshape".

Variables Globales:
Son variables que se puede utilizar en cualquier momento y desde cualquier funcion definida en el archivo .m.
El unico requisito es declarar las variables en cada una de las funciones donde se la vaya a utilizar.

A continuacion planteamos un ejemplo:
Tenemos 2 funciones en un archivo .m en matlab, lo cual quedaria asi:

function func1(hObject, eventdata, handles)
     global var2
     var1 = [1:1:10];
     var2 = sum(var1/(7-var1));

function func2(hObject, eventdata, handles)
     global var2
     disp(var2);

En el ejemplo anterior se puede observar que gracias a la definicion de la variable global var2 se puede utilizar esta variable en ambas funciones.
En la primera funcion definimos "var1" como una variable que varia de uno en uno desde 1 hasta 10 y la variable "var2" realiza la suma para todos los valores de "var1".

Funcion Rand:
Esta funcion nos permite generar numeros aleatorios en intervalos determinados, ademas nos permite crear vectores y matrices de numeros aleatorios, para lo cual se puede utilizar las siguientes sentencias:

rand(1) --> genera un numero aleatorio entre 0 y 1.
rand(5,1) --> genera un vector de numeros aleatorios de 5x1.
rand(1,3) --> genera un vector de numeros aleatorios de 1x3.
rand(2,3) --> genera una matriz de numeros aleatorios de 2x3.
rand(2,3,2) --> genera 2 matrices de numeros aleatorios de 2x3.


Existen otras funciones para generar valores aleatorios como las siguientes: randi(), randn().

La función randi() devuelve valores enteros dobles extraídas de una distribución uniforme discreta.
randi(2,10,1);

La función randn() devuelve matrices de números en coma flotante reales que se dibujan de una distribución normal estándar.
randn(10,1);

Funcion Reshape:
Esta funcion nos permite redimensionar matrices, por ejemplo se puede cambiar una matriz que representa valores para x,y,z en una matriz que represente valores solamente en x,y. Se aprecia mejor en el siguiente ejemplo:

Tenemos una matriz compuesta de los siguientes datos:

Podemos redimensionar con:

>> B = reshape(A(:, :, :), 24, 1)

Con este comando logramos crear un solo vector de datos de 24x1, en el cual contenga en sus filas cada uno de los valores de las matrices anteriores a la redimension.

No hay comentarios.:

Publicar un comentario