MATLAB.
INTRODUCCIÓN.
Matlab es un programa interactivo para cálculo numérico y tratamiento de datos. Contiene muchas herramientas y utilidades que permiten además diversas funcionalidades, como la presentación gráfica en 2 y 3 dimensiones. Esos útiles están agrupados en "paquetes" (toolboxes). A Matlab se le pueden añadir paquetes especializados para algunas tareas (por ejemplo, para tratamiento de imágenes). Trabajar con Matlab comporta aprender un lenguaje simple. En esta introducción se explican los elementos básicos de este lenguaje.
Matlab es un programa command-driven, es decir, que se introducen las órdenes escribiéndolas una a una a continuación del símbolo » (prompt) que aparece en una interfaz de usuario (una ventana). Esta introducción contiene ejemplos que se pueden escribir directamente en la línea de comandos de Matlab. Para distinguir esos comandos, junto con la respuesta del programa, se emplean un tipo de letra diferente:
»2+2
ans = 4
Una manera de seguir esta introducción consiste en abrir Matlab en otra ventana, e ir copiando y pegando el comando a continuación del símbolo >>.
Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente procesadores digitales de señal o crear código VHDL.
HISTORIA.
Fue creado por Cleve Moler en 1984, surgiendo la primera versión con la idea de emplear paquetes de subrutinas escritas en Fortran en los cursos de álgebra lineal y análisis numérico, sin necesidad de escribir programas en dicho lenguaje. El lenguaje de programación M fue creado en 1970 para proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran.
En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en ámbitos académicos y empresariales.
Matlab es un programa de cálculo numérico orientado a matrices. Por tanto, será más eficiente si se diseñan los algoritmos en términos de matrices y vectores.
Ejemplos:
>> disp('Hola mundo'); % Muestra el mensaje.
Hola mundo
DISEÑO DE FILTROS DIGITALES.
En este ejemplo se diseña un filtro digital paso bajo de Butterworth y se muestra el módulo de su espectro además incluimos otro ejemplo de un tren de deltas para el análisis espectral:
close all % Cierra todas las ventanas.
clear all % Borra todas las variables.
clc % Limpia la pantalla.
Fc=200; % Frecuencia de corte.
Fm=1000; % Frecuencia de muestreo.
BT=100; % Banda de transición.
Rs=40; % Ganancias.
rs=10^(-Rs/20);
Rp=2;
rp=(10^(Rp/20)-1)/(10^(Rp/20)+1);
[n1b,wn1]=buttord(2*Fc/Fm,2*(Fc+BT)/Fm,Rp,Rs); % Orden del filtro
[B1,A1]=butter(n1b,wn1); % Coeficientes del filtro
h1=freqz(B1,A1); % Respuesta en frecuencia
plot(abs(h1)) % Representación de la respuesta.
La notación para las operaciones matemáticas elementales es la siguiente:
^ | exponenciación |
* | multiplicación |
/ | división |
+ | suma |
- | resta |
El orden en que se realizan las operaciones de una línea es el siguiente:
Primero, la exponenciación; luego, las multiplicaciones y divisiones; y finalmente, las sumas y las restas. Si se quiere forzar un determinado orden, se deben utilizar paréntesis, que se evalúan siempre al principio.
Por ejemplo; para hallar dos entre tres,
» 2/2+1
ans = 2
(en efecto: primero se calcula 2/2 y luego se suma 1).
» 2/(2+1)
ans = 0.6667
Primero se calcula el paréntesis (2+1) y luego se realiza la división.
Dos observaciones. El punto decimal es “.” no “,”. Y en Matlab, las mayúsculas y las minúsculas son distintas. Es decir, X es una variable diferente de x.
He aquí una tabla con algunas funciones elementales:
sin | seno |
cos | coseno |
tan | tangente |
sec | secante |
csc | cosecante |
cot | cotangente |
exp | exponencial |
log | logaritmo natural |
sqrt | raíz cuadrada |
abs | valor absoluto |
Para obtener las funciones trigonométricas inversas, basta añadir una a delante del nombre. Y para las funciones hiperbólicas, una h al final.
Por ejemplo; atanh(x) es el arcotangente hiperbólico de x:
» z=atanh(2)
z = 0.5493 + 1.5708i
(z es un número complejo).
Comandos relacionados con el sistema operativo:
pwd | Present working directory (directorio de trabajo actual) |
cd | cambiar de directorio |
dir | listado de los ficheros del directorio actual |
Estos comandos son muy similares a los análogos de MS-DOS o UNIX.
· Guardar y cargar ficheros de datos. Se emplean los comandos save y load, respectivamente.
Para guardar datos: save [nombre del fichero] [variable] –ascii.
Para recuperar datos: load [nombre del fichero] [variable] –ascii.
Algunas funciones definidas sobre matrices:
det | determinante |
inv | matriz inversa |
poly | polinomio característico |
' | transpuesta |
GRÁFICOS.
Las posibilidades de Matlab son muy grandes. Se indica a continuación cómo realizar gráficos sencillos.
Veamos cómo se puede representar la función seno entre 0 y 10.
Para empezar creemos una variable x que vaya de cero a 10:
» x=0:0.1:10;
y a continuación, calculemos sin(x) almacenando el resultado en la variable y:
» y=sin(x);
Para trazar el gráfico, se emplea la función plot:
» plot(x,y)
y se obtiene en otra ventana el gráfico:
Entre los muchos comandos que se pueden utilizar para modificar los gráficos, es muy útil el empleado para cambiar la escala de los ejes. La orden es
axis([x1 x2 y1 y2])
donde x1, x2 son los límites inferior y superior del eje x, e y1 e y2 los del eje y.
También permite dibujar superficies. La forma más sencilla es mediante el comando ezsurf.
>>ezsurf('sin(x*y)',[-2 2 -2 2])
aunque se pueden realizar gráficas más sofisticadas:
>>t=0:0.001:0.009; >>v=900:1025; >>[TV]=meshgrid(t,v); >>aux1=16*pi^2*(T.^2).*((V-918).^2).*((V-1011).^2); >>aux2=aux1+(2*V-1929).^2; >>w=T./aux2; >>z=35000000*w; >>surfl(t,v,z); % Este comando dibuja la superficie creada mediante las
>>shading interp; % ordenes anteriores.
>>colormap(pink); % Los siguientes sirven para modificar el dibujo obtenido.
>>shading interp; % ordenes anteriores.
>>colormap(pink); % Los siguientes sirven para modificar el dibujo obtenido.
>>rotate3d; % Sirve para girar la figura mediante el ratón.
Para imprimir una figura, basta seleccionar print del menú de la figura.
SCRIPTS.
Realizar un programa en Matlab es fácil. Basta abrir un editor de texto (como el Bloc de Notas de Windows) y escribir los comandos uno a continuación de otro. Luego ese fichero de texto debe guardarse con la extensión .m, y a eso se le llama un script:
Una vez guardado el fichero (en el ejemplo, ndata.m) en el directorio actual, desde la línea de comandos de Matlab basta escribir ndata para que se ejecute el programa.
CÁLCULO SIMBÓLICO.
Hasta ahora, las operaciones que se han mostrado se han realizado con números. El toolbox de cálculo simbólico permite realizar cálculos abstractos:
» diff('sin(x)')
ans = cos(x)
Las expresiones simbólicas se introducen entre apóstrofes.
A continuación se da una tabla con algunas funciones de este toolbox, junto con un ejemplo de cada una:
diff | derivada | diff('sin(x)') |
int | integral | int('x^2') |
solve | resolución de ecuaciones | solve('x^2-3*x+2=0') |
ezplot | gráficos | ezplot('exp(x)') |
Evidentemente, las expresiones pueden ser todo lo complicadas que se quiera.
» solve('x=cos(x)')
ans = .73908513321516064165531208767387
» int('(x^4+4*x^3+11*x^2+12*x+8)/((x^2+2*x+3)^2*(x+1))')
ans = log(x+1)+1/8*(-4*x-8)/(x^2+2*x+3)-
1/4*2^(1/2)*atan(1/4*(2*x+2)*2^(1/2))
PANTALLA DEL PROGRAMA MATLAB.