Está en la página 1de 62

MATLAB

Fundamentos
CONO o smbolo de Matlab

.
.MATLAB, "laboratorio de matrices") es una herramienta de
software matemtico que ofrece un
entorno de desarrollo integrado(IDE) con un lenguaje de
programacin propio (lenguaje M). Est disponible para
Unix,Windows,Mac OS XyGNU/Linux
Entre sus prestaciones bsicas se hallan: la manipulacin
dematrices, la representacin de datos y funciones, la
implementacin dealgoritmos, la creacin de interfaces de
usuario (GUI) y la comunicacin con programas en otros
lenguajesy con otros dispositivoshardware. El paquete
MATLAB dispone de dos herramientas adicionales que
expanden sus prestaciones, a saber, Simulink (plataforma
de simulacin multidominio) y GUIDE (editor de interfaces
de usuario - GUI). Adems, se pueden ampliar las
capacidades de MATLAB con lascajas de herramientas
(toolboxes); y las de Simulink con lospaquetes de
bloques(blocksets).
Historia de MATLAB
Fue creado por el matematico y programador de
computadoras Cleve Moler en1984, surgiendo la
primera versin con la idea de emplear paquetes de
subrutinas escritas enFortranen los cursos de lgebra
lineal y anlisis numrico, sin necesidad de escribir
programas en dicho lenguaje. El lenguaje de
programacin M fue creado en1970para proporcionar
un sencillo acceso al software de
MatricesLINPACKyEISPACKsin tener que usarFortran.
En 2004, se estimaba que MATLAB era empleado por
ms de un milln de personas en mbitos acadmicos y
empresariales
Partes de la ventana principal
Hacer click en el cono de Matlab7, aparece la ventana principal dividida en 5
partes:
1.- Barra de Mens y de Herramientas
2.- Ventana del Directorio Actual
3. Navegador del Workspace (hacer click en ficha W
4. Ventana del Historial de Comandos
5. Ventana de Comandos >>
..
Ventana de comandos

Es la que tiene el smbolo >>


En ella se puede ingresar datos y realizar
operaciones directamente. Como sigue:
>>6/3 da como resultado >> 2
>>a=8/3
Dar como resultado
>> a=
2.3333
>>b=12
>>P=a*b dar como resultado
>>P=32
El punto y coma oculta el resultado
Ventana del workspace

Se consigue abrir haciendo click en la segunda barra


superior izquierda de una hoja en blanco
En esta ventana se elaboran los programas, las
funciones y los procedimientos
Es una ventana numerada donde uno puede ubicar cada
instruccin en cada linea
GENRALIDADES
MATLABdistingue entre maysculas y minsculas.
La comilla ' es la que, en un teclado estndar, se
encuentra en la tecla de la interrogacin.
Los comentarios deben ir precedidos por%o, lo que es
lo mismo,MATLABignora todo lo que vaya precedido
por el smbolo%. Aparece con color verde.
La ayuda deMATLABes bastante til; para acceder a la
misma basta teclearhelp. Es recomendable usarlo para
obtener una informacin ms precisa sobre la sintaxis y
diversas posibilidades de uso de los comandos.
Los clculos que no se asignan a una variable en
concreto se asignan a la variable de respuesta por
defecto que esans(del ingls,answer):
>>2+3
Operadores aritmticos para
a, b
+ a+b
- a-b
* a*b
/ a/b
\ b/a
^ a^b
Operadores lgicos

= diferente
> mayor
< menor
>= mayor o igual
<= menor o igual
| disjuncin
== igual
Comandos de ayuda

help
>>help quit
Nos devuelve como resultado
>>quit termina la sesin de Matlab
>> help +
What, produce una lista de los archivos m
Who produce una lista de variables
Whos exhibe informacin adicional de
c/variable
Demo gua al usuario a ejecutar diversas
demostraciones que se eligen de un men
Asignacin de variables

Las variables son numricas o de cadena y se conservan


en el tiempo de uso. Pero tambin se pueden borrar con
el comando clear
clc borra la pantalla ms no las variables
As
>>base=6
>>altura=4
>>area=base*altura
Constantes

En Matlab hay variables denominadas constantes, pues


ya tienen un valor
eps tiene valor 2.2204e-10
pi tiene valor 3.14159
i, j es raiz cuadrado de -1
Inf infinito
NaN no es nmero
Date
Ejemplos

>>2.71828^pi
>>pi^2.71828
>>pi^(1/3)
Formatos numricos

format short
format short g
format short e
format long
format long e
format long g
format bank
Comando de lectura

Lectura y escritura interactiva


>>z=input( );
>>Z=input(ingrese un nmero:);
Asigna a la variable z el nmero asignado
>>w=input(ingrese su nombre:);
Asigna a la variable w la cadena ingresada
Comandos de escritura fprintf

fprintf permite visualizar un valor numrico


>>vol=49.3426
fprintf(%3.6f\n),2.71828182^2
\n: indica que la impresin ser en la siguiente lnea
%8.0f: formato de un nmero entero
%8.5f:formato de un nmero real con 5 decimales
Comandos de escritura disp
disp, visualiza en pantalla un mensaje de texto o el valor de una matriz.
En realidad disp siempre imprime vectores y/o matrices, las cadenas de
caracteres se consideran un caso particular de vetores. Ejs
>>disp(esta es una prueba);
>>disp(pi);
>>A=rand(4,4).
>>disp(A)
Vectores y Matrices
Para definir un vector fila, basta introducir sus coordenadas entre corchetes:
>>v=[1 2 3]% Vector de3coordenadas
v=
123
>>w=[4 5 6];

El operador'es el de trasposicin (en realidad trasposicin y conjugacin):


>>w'
ans =
4
5
6

Si queremos declarar un vector de coordenadas equi espaciadas entre dos dadas, por ejemplo, que la
primera valga 0, la ltima 20 y la distancia entre coordenadas sea 2, basta poner:
>>vect1=0:2:20
vect1 =
0 2 4 6 8 10 12 14 16 18 20

.
Equivalentemente, si lo que conocemos del vector es que la primera
coordenada vale 0, la ltima 20 y que tiene 11 en total, escribiremos:
>>vect2=linspace(0,20,11)
vect2 =
0 2 4 6 8 10 12 14 16 18 20
A las coordenadas de un vector se accede sin ms que escribir el nombre
del vector y, entre parntesis, su ndice:>>vect2(3)
ans =
4
y se pueden extraer sub vectores, por ejemplo:
>>vect2(2:5)
ans=
2468
o,
>>vect1(:)
ans=
0
2
.
4
6
8
10
12
14
16
18
20
Las matrices se escriben como los vectores, pero separando las
filas mediante un punto y coma; as una matriz 3x3:
>>M=[1 2 3;4 5 6;7 8 9]
M =
1 2 3
4 5 6
789
Matriz transpuesta

>>M' % Su traspuesta (su adjunta)


ans =
1 4 7
2 5 8
369
Concatenacin de matrices

>>mat=[v;w;0 0 1]% Tambin es una matriz3x3


mat =
1 2 3
4 5 6
001
Elementos, filas y columnas
de una matriz
A los elementos de una matriz se accede sin ms que escribir el nombre de la
matriz y, entre parntesis, los respectivos ndices:
>>mat(1,3)% Elemento en la primera fila y tercera
columna de la matrizmat
ans =
3
Tambin se puede acceder a un fila o columna
completas,
>>mat(:,2)% Segunda columna demat
ans =
2
5
0
>>mat(2,:)% Su segunda fila
ans =
456
acceder a cualquiera de sus
submatrices
>>mat(2:3,[1 3])% Submatriz formada por los
elementos que estn en
% "todas" las filas que hay entre la segunda y
la tercera y
% en las columnas primera y tercera
ans =
4 6
01
matrices especiales predefinidas
>>eye(5)% eye se pronuncia en ingls como I
ans =
1000 0
0100 0
0010 0
0001 0
0000 1
la matriz nula,
>>zeros(3)
ans =
0 0 0
0 0 0
000
o la matriz cuyos elementos valen todos 1:
>>ones(4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1111
tamao de una matriz
>>size(mat)% Dimensiones de la matrizmat(nmero de
filas y de columnas)
ans =
33
>>size(v)
ans =
13
>>length(v)% Longitud del vector (nmero de
coordenadas)
ans =
3
comandos que permiten crear matrices
>>diag(v)% Matriz diagonal cuya diagonal es el vectorv
ans =
1 0 0
0 2 0
003
>>diag(diag(M))% Matriz diagonal con la diagonal deM. La
sentenciadiag(M)%dael vector formado por la diagonal de la matrizM
ans =
1 0 0
0 5 0
009
>>diag(ones(1,4),1)+diag(ones(1,4),-1)% Matriz tridiagonal5x5con0en la
diagonalprincipal y1en la sub y superdiagonal
ans =
0 10 0 0
1 01 0 0
0 10 1 0
0 01 0 1
0 00 10
.
>>tril(M)% Matriz formada por la parte triangular
inferior deM.
ans =
1 0 0
4 5 0
789
>>triu(M)% Matriz formada por la parte triangular
superior deM.
ans =
1 2 3
0 5 6
009
OPERACIONES CON VECTORES Y MATRICES
Las funciones matemticas elementales estn definidas de forma que se pueden
aplicar sobrearrays. El resultado es elarrayformado por la aplicacin de la funcin a
cada elemento delarray. As:
>>log(v)
ans =
0 0.6931 1.0986
>>p=(0:0.1:1)*pi% Vector definido como el producto de un vector por un escalar
p =
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.88502.1991 2.5133 2.8274 3.1416
>>x=sin(p)
x =
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.95110.8090 0.5878 0.3090 0.0000
.
Las operaciones habituales entrearrays(suma, resta y producto escalar de
vectores; suma, resta, producto y potencia de matrices) se representan con los
operadores habituales:
Recordemos que v =1 2 3
w =4 5 6
>>z=v*w'% Producto escalar (producto de matrices1x3por3x1)
z =32
>>Z=w'*v% Producto de matrices3x1por1x3= Matriz3x3
Z =
4 8 12
5 10 15
6 12 18
>>v*w% Los vectoresvywno se pueden multiplicar
??? Error using ==> *
Inner matrix dimensions must agree.
.>>mat% Recordamos el valor de la matrizmat
mat =
1 2 3
4 5 6
001
>>mat^2% Matrizmatelevada al cuadrado
ans =
9 12 18
24 33 48
0 0 1
Operaciones elemento a elemento
Tambin pueden efectuarse multiplicaciones, divisiones y potencias dearrays,
entendindolas como elemento a elemento (como, de hecho, se realizan la suma
y la resta). El operador utilizado para ellas es el habitual precedido por un
punto; es decir:
>>v.*w% Vector formado por los productos de las respectivas coordenadas:
%ans(i)=v(i)*w(i)
ans =
4 10 18
>>w./v% Vector formado por el cociente de cada coordenada dewentre la
% coordenadacorrespondiente dev:ans(i)=w(i)/v(i)
ans =
4.0000 2.5000 2.0000
>>mat.^2% Matriz cuyos elementos son los dematelevados
% al cuadrado:ans(i,j)=mat(i,j)^2
ans =
1 4 9
16 25 36
0 0 1
Determinantes y sistemas de
Ecuaciones lineales
Finalmente, pueden calcularse determinantes:
>>det(mat)
ans =
-3
y resolverse sistemas de ecuaciones lineales con el
verstil comando\:
>>mat\v'
ans =
2.6667
-5.3333
3.000
VARIABLES LGICAS
Tambin existen variables lgicas que toman los valores 0 (falso) o 1 (verdadero) .
Por ejemplo:
>>abs(v)>=2% Vector lgico cuyas coordenadas valen1si la coordenada
% correspondiente deves>= 2y0si no lo es
ans =
011
>>vector=v(abs(v)>=2)% Vector formado por la coordenadas
devque % verifican la desigualdad
vector =
23
>>v2=[3 2 1]
v2 =
321
>>logica=v==v2% Asignacin de un valor lgico (el doble signo igual es el
% igual lgico)
logica =
010
Ejemplo

>>logic2=v~=v2% Distinto (~es el operador de negacin)


logic2 =
101
POLINOMIOS

Se puede trabajar con polinomios: basta tener en


cuenta que un polinomio no es ms que un vector. El
orden de los coeficientes es de mayor a menor grado,
por ejemplo:
>>p=[1 0 2 0 3]% Polinomiox^4+2*x^2+3
p =
10203
>>q=[2 1 0]% Polinomio2*x^2+x
q =
210
funciones especficas para polinomios
>>polyval(p,-1)% Evaluacin del polinomiox^4+2x^2+3enx=-1
ans =
6
>>pro=conv(p,q)% Producto de los polinomiospyq
pro =
2142630
>>deconv(pro,p)% Cociente entreproyp; obviamente el resultado esq
ans =
210
>>roots(pro)% Races del polinomiopro
ans =
0
0.6050+1.1688i
0.6050-1.1688i
-0.6050+1.1688i
-0.6050-1.1688i
-0.5000
.

>>poly([i -i 1/2 pi])% Polinomio mnico que tiene por


races a los
% nmerosi,-i,0.5ypi
ans =
1.0000 -3.6416 2.5708 -3.6416 1.5708
DERIVADAS
Dentro del mdulo (toolbox) de matemtica simblica, se
utiliza el programa de clculo simblicoMAPLE. Con estas
herramientas, se puede trabajar con funciones.
>>f='sin(x)'% Funcinsin(x)definida mediante una cadena
de caracteres
f =
sin(x)
calcular derivadas,
>>diff(sym(f))
ans =
cos(x)
>>diff(sym(f),2)% Derivada segunda def
ans =
-sin(x)
INTEGRALES

>>int(sym('log(x)'))% Primitiva de la funcin logaritmo


ans =
x*log(x)-x
>>diff(sym('x*log(x)-x'))% Comprobacin
ans =
log(x)
GRFICAS
MATLABtiene un gran potencial de herramientas grficas.
Se pueden dibujar los valores de un vector frente a otro
(de la misma longitud):
>>x=pi*(-1:0.1:1);
>>y=x.*sin(x);
>>plot(x,y)% Por defecto une los
puntos(x(i),y(i))mediante una poligonal
.

Como se ve, con pocos puntos la grfica tiene un aspecto demasiado


lineal a trozos. Para "engaar" al ojo, basta tomar ms puntos.
.>>x=pi*(-1:0.01:1);
>>y=x.*sin(x);
>>plot(x,y)
.>>fplot('sin(x)',[0 2*pi])% Dibuja la funcin seno en el
intervalo[0,2*pi]
Grficas superpuestas

>>hold on% Mantiene en la ventana grfica los


dibujos anteriores
>>fplot('cos(x)',[0 2*pi])% Dibuja sobre la grfica anterior
la funcincos(x)
.
.>>hold off% Con esto olvida los dibujos anteriores
% y dibuja en una ventana nueva
>>fplot('x^2*sin(1/x)',[-0.05 0.05])% Dibuja la
funcinx^2*sin(1/x)
.>>ezplot('exp(x)')% Dibuja la funcin exponencial en un
intervalo adecuado a la funcin
curvas en paramtricas
>>ezplot('sin(t)','cos(t)',[0 pi])
Curvas implcitas
>>ezplot('x^2 - y^2 - 1')
Superficies:comando ezsurf
>>ezsurf('sin(x*y)',[-2 2 -2 2])
grficas sofisticadas:
>>t=0:0.001:0.009;
>>v=900:1025;
>>[T V]=meshgrid(t,v);
>>aux1=16*pi^2*(T.^2).*((V-918).^2).*((V-1011).^2);
>>aux2=aux1+(2*V-1929).^2;
>>w=T./aux2;
>>shading interp;% ordenes anteriores. Los siguientes
sirven para modificar
>>colormap(pink);% el dibujo obtenido
>>rotate3d;% Sirve para girar la figura mediante
el ratn
.
PROGRAMACIN EN MATLAB
Para escribir un programa conMATLABhabr que crear un fichero que
tenga extensin.my contenga las instrucciones. Esto se puede hacer
con cualquier editor de textos, pero tiene algunas ventajas usar el
editor propio deMATLABllamadomedit.
MATLABtrabaja con memoria dinmica, por lo que no es necesario
declarar las variables que se van a usar. Por esta misma razn, habr
que tener especial cuidado y cerciorarse de que entre las variables
del espacio de trabajo no hay ninguna que se llame igual que las de
nuestro programa (proveniente, por ejemplo, de un programa
previamente ejecutado en la misma sesin), porque esto podra
provocar conflictos. A menudo, es conveniente reservar memoria
para las variables (por ejemplo, si se van a utilizar matrices muy
grandes); para ello, basta con asignarles cualquier valor. Del mismo
modo, si se est usando mucha memoria, puede ser conveniente
liberar parte de ella borrando (clear) variables que no se vayan a usar
ms.
PROGRAMA
Un programa escrito enMATLABadmite la mayora de las
estructuras de programacin al uso y su sintaxis es bastante
estndar. En los siguientes ejemplos se muestra la sintaxis
de algunas de estas estructuras (if,for,while,...).
Programa es un conjunto ordenado de instrucciones.
Ejemplo 1:Calcular la suma de los n primeros trminos
de la sucesin 1, 2x, 3x^2, 4x^3, ...
n=input('Cuntos trminos quieres sumar? ');
x=input('Dame el valor del numero x ');
suma=1;
fori=2:n
suma=suma+i*x^(i-1);
end
disp('El valor pedido es')
disp(suma)

.
Ejemplo 2:Decidir si un nmero natural es primo.
n=input('Nmero natural que deseas saber si es primo ');
i=2;
primo=1;
whilei<=sqrt(n)
ifrem(n,i)==0% Resto de dividir n entre i
primo=0;
break
end
i=i+1;
end
ifprimo
disp('El nmero dado es primo.')
else
disp('El nmero dado no es primo.')
disp('De hecho, es divisible por:')
disp(i)
end
.
Ejemplo 3:Escribir un nmero natural en una base dada
(menor que diez).
n=input('Dame el nmero que quieres cambiar de
base ');
base=input('En qu base quieres expresarlo? ');
i=1;
whilen>0
c(i)=rem(n,base);
n=fix(n/base);% Parte entera de n/base
i=i+1;
end
disp('La expresin en la base dada es:')
i=i-1;
disp(c(i:-1:1))
funciones
La primera instruccin de un fichero que contenga una
funcin de nombrefundebe ser:
function[argumentos de salida]=fun(argumentos de
entrada)
Es conveniente que el fichero que contenga la funcin se
llame como ella; as, la funcin anterior debera
guardarse en el ficherofun.m; por ejemplo, si se desea
programar una funcin que calcule, mediante el
algoritmo de Euclides, el mximo comn divisor de dos
nmeros naturales, basta escribir un
ficheroeuclides.mcuyo contenido sea:
functionm=euclides(a,b)
% Clculo del mximo comn divisor de dos nmeros
naturales
% mediante el algoritmo de Euclides
ifa<b
.
functionm=euclides(a,b)
% Clculo del mximo comn divisor de dos nmeros nat
% mediante el algoritmo de Euclides
ifa<b
c=b;
b=a;
a=c;
end
whileb>0
c=rem(a,b);
a=b;
b=c;
end
m=a;

.
Si, una vez escrito el fichero anterior, en el espacio de trabajo o en un
programa se escribe la instruccin
mcd=euclides(33,121)
en la variablemcdse almacenar el valor 11.
Las variables de una funcin son siempre locales. Por tanto, aunque en el
seno de la funcin se modifiquen los argumentos de entrada, el valor de
las variables correspondientes queda inalterado. Por ejemplo, en la
funcineuclides.mse modifica el valor de los argumentos de entrada,
pero, sin embargo:
>>x=15;
>>mcd=euclides(x,3);
>>x
x =
15
Si se pretende que las modificaciones de un argumento de entrada afecten a
la variable correspondiente, deber situarse dicho argumento, adems,
en la lista de argumentos de salida.

También podría gustarte