MatLAB (matrix laboratory) es un software y lenguaje de programación interpretado usado día a día por miles de ingenieros, matemáticos y físicos, gracias a su alto nivel de integración y a la potencia de los elementos de los cuales obtuvo su nombre, las matrices.
Actualmentre en prácticamente todas las carreras de ingeniería y en ciencias puras se aprende a manejar MatLAB en alguna asignatura, y me gustaría motivar a la gente a usarlo, ya que a pesar de la mala fama que tiene en algunos sectores (especialmente el informático) sigue siendo una herramienta completísima y con una potencia de cálculo enorme.
Tanto si estas comenzando como si nunca lo habeis usado, en este hilo podemos plantear dudas y postear nuestras cosillas programadas en este lenguaje.
para que sirve esto?
Al igual que todo lenguaje de programacion (excepto c que es bastante mediocre en todo, lo cual es bueno y malo) MatLAB te soluciona con simplicidad cierto tipo de problemas, complicandote la vida en otros. Una lista muy escueta de para lo que puede servirte MatLAB es:
-
Realizar calculos matemáticos, resolver sistemas de ecuaciones gigantescos, resolver operaciones con matrices.
-
Procesar señales. Imágenes, audio video, todo son matrices desde el punto de vista informático.
-
Manejar grandes cantidades de datos, hacer estadísticas con ellos, calcular regresiones...
-
procesar datos de hojas de cálculo (estilo excel), tanto numéricos como texto.
-
generar figuras con gráficas, archivos de texto, archivos binarios, audio, imágenes,...
-
Muchos mas... cualquier cosa mínimamentre relacionada con matrices, y con ello abarco muchísimas cosas.
Adicionalmente al software básico, MATLAB incluye las llamadas toolboxes, librerias enormes dedicadas a un sector especializado, como procesado de imágenes, economía, bioingeniería...
el lenguaje MATLAB
MATLAB es un lenguaje interpretado con las ventajas e inconvenientes que ello supone. El layout por defecto del programa incluye una consola donde introducir una a una las sentencias del programa a diseñar o bien editar un archivo de texto o "script" donde se listan todas las acciones a seguir y se ejecutan secuencialmente.
Una de las cualidades de este lenguaje que suele chocar a los principiantes es el poco o inexistente uso de los bucles (while, for, etc). Debido al uso de matrices para todo, el uso de bucles no es necesario (aunque se pueden usar de todos modos)
los detalles de la sintaxis MATLAB
El lenguaje que usa MATLAB es muy similar a cualquiero otro lenguaje de propósito general u orientado a objetos. Es un lenguaje secuencial donde pueden usarse bloques condicionales, bucles, etc. No obstante tiene sus particularidades:
- una matriz se delimita con corchetes, números de la misma linea se separan con espacios o comas y una nueva línea con punto y coma.
matriz1 = [1 4 8 3; 1 4 3 3; 2 2 9 2]
matriz1 =
1 4 8 3
1 4 3 3
2 2 9 2
- El acceso a una posicion determinada de un array se consigue con los paréntesis, y la primera posicion es 1, no 0.
matriz2 = [32 56 12 78]
matriz2 =
32 56 12 78
matriz2(2)
ans =
56
- Uno de los operadores nativos más útiles es :, que dependiendo del contexto significa "todo", "en pasos de", o "hasta". Tambien otro operador propio es la comilla simple, usada para trasponer matrices.
a = [1:8]
a =
1 2 3 4 5 6 7 8
a(:)
ans =
1
2
3
4
5
6
7
8
b = [0:0.2:1]
b =
0 0.2000 0.4000 0.6000 0.8000 1.0000
- los operadores como /, * o ^ dividen multiplican, elevan, etc las matrices desde el punto de vista del álgebra. para operar miembro por miembro se precede el operador de un punto.
m = [1 2 3 4]
m =
1 2 3 4
n = [5; 6; 7; 8]
n =
5
6
7
8
m * n
ans =
70
o = [5 6 7 8]
o =
5 6 7 8
m .* o
ans =
5 12 21 32
- La sintaxis de los bloques mas típicos es la siguiente
if (x == 1)
%statement 1
%...
%statement n
else
%statement 1
%...
%statement n
end
for i = 1:10
x(i)= i * 2;
end
Por supuesto MATLAB posee infinidad de funciones nativas para prácticamente todas las operaciones posibles, siempre orientadas para matrices, claro.
sum([1 2 3 4 5])
ans =
15
mean([1 2 3 4 5])
ans =
3
fft([1 2 3 4])
ans =
10.0000 -2.0000 + 2.0000i -2.0000 -2.0000 - 2.0000i
como conseguir MATLAB
La mejor solución es ser estudiante de universidad y pedir a mathworks una licencia de estudiante. El precio estandar 'creo' que son $500, por lo que tenerlo by the face es un detalle a tener en cuenta.
Adicionalmente la version 7.0 esta abandonada y puede descargarse en multitud de sitios, solo pesa 20mb y posee un paquete generoso de funciones.
Una aplicacion de todo esto
Esto es un ejemplo de la típica aplicación que resulta perfecta para MATLAB. Es un conversor de cualquier imagen a Hama Beads. Se escanean los colores de cada pixel y se decide el color del catálogo de Hama Beads más parecido. El programa calcula las imagenes con dither y sin dither, y te presenta como resultado las imagenes con colores Hama beads y la lista de la compra. Adicionalmente puede sacarte mini imagenes previas con el numero de color superpuesto si la imagen es muy grande para poder ir haciendola por partes.
Si a alguien le interesa los codigos, puede bajarlos aqui: http://puu.sh/6A7ui.rar