You are on page 1of 13

IC/UNSA

F. Copa P.

1.1 Introduccin
MATLAB es un software comercial y una marca comercial de MathWorks, Inc.,
EE.UU. Se trata de un sistema de programacin integrado, incluyendo interfaces
grficas y un gran nmero de cajas de herramientas especializadas. MATLAB es ms
popular en todos los campos de las ciencias e ingeniera.
En esta seccin se presenta algunas nociones bsicas necesarias para la comprensin del
MATLAB. Un estudio ms profundo de MATLAB puede obtenerse a partir de muchos
libros de MATLAB aplicado a la ingeniera y la ayuda muy til de MATLAB.
1.2 Matrices
Las matrices son el objeto fundamental de MATLAB y son particularmente tiles en la
ingeniera. Las matrices pueden ser creados en MATLAB de muchas formas, la ms
simple obtenido por los comandos
>> a=[1 2;3 4]
a=
1 2
3 4
Tenga en cuenta el punto y coma al final de cada lnea separa las filas matriz. Tambin
podemos generar matrices por funciones predefinidas, tales como matrices aleatorias
>> rand(2)
ans =
0.8147 0.1270
0.9058 0.9134
Matriz aleatoria rectangular
>> rand(2,4)
ans =
0.5144 0.5880
0.8843 0.1548

0.1999
0.4070

0.7487
0.8256

Matriz diagonal
>> eye(2)
ans =
1 0
1 1
Matriz de ceros
>> zeros(2)
ans =
0 0
0 0

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

1.3 Operaciones matriciales


Podemos sumar, restar, multiplicar y adaptar matrices. Por ejemplo, podemos obtener
una matriz c = a + b, por los siguientes comandos
>> a=rand(2,4)
a=
0.7900 0.5341
0.3185 0.0900

0.1117 0.6787
0.1363 0.4952

>> b=rand(2,4)
b=
0.1897 0.1476
0.4950 0.0550

0.8507
0.5606

0.9296
0.6967

>> c=a+b
c=
0.9797 0.6817
0.8135 0.1449

0.9624
0.6969

1.6083
1.1918

1.4 declaraciones (Statements)


Las declaraciones son operadores, funciones y variables, siempre produciendo una
matriz que puede ser utilizado ms tarde. Algunos ejemplos de declaraciones:
>> a=7
a=
7
>> b=2*a
b=
14
>> e=2*magic(2)
e=
2 6
8 4
1.5 Funciones matriciales
Algunas funciones matriciales tiles se dan en la tabla 1.1
Tabla 1.1 Algunas funciones tiles para matrices
Eye
Identidad
zeros
Una matriz de ceros
ones
Una matriz de unos
diag
Crea o extrae la diagonal
rand
matriz aleatoria
Algunos ejemplos de estas funciones se dan en los siguientes comandos (aqu construir
matrices por bloques)

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

>> [diag(eye(2)), eye(2), rand(2)]


ans =
1.0000 1.0000
0 0.0005
1.0000
0 1.0000 0.8654

0.6126
0.9900

Ensamble una matriz en base a submatrices


>> a
a=
1
4
7

2
5
8

3
6
9

>> b = [a, zeros(3,2); zeros(2,3), ones(2)]


b=
1
4
7
0
0

2
5
8
0
0

3
6
9
0
0

0
0
0
1
1

0
0
0
1
1

1.6 Los condicionales, if y switch


A menudo una funcin necesita diversificarse en base a las condiciones de tiempo de
ejecucin. MATLAB ofrece estructuras de este similares a los de la mayora de los
lenguajes. He aqu un ejemplo que ilustra la mayora de las caractersticas de s.

x=0;
if x==0
disp('Bad input!')
elseif max(x) > 0
y = x+1;
else
y
end
Bad input!

unid='A'
switch unid
case 'A'
disp('Se eligio A')
case 'B'
disp('se eligio A')
otherwise
disp('no se completo')
end
Se eligio A

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

1.7 Lazos: for y while


Muchos programas requieren iteracin, o la ejecucin de la repeticin de un bloque de
instrucciones.
Una vez ms, MATLAB es similar a otros idiomas aqu. Este cdigo de clculo de los
8 primeros nmeros de Fibonacci ilustra el tipo ms comn de para / final del bucle:
>> f=[1 2]
f=
1 2
>> for i=3:8;f(i)=f(i-1)+f(i-2);end;
>> f
f=
1 2 3 5 8 13 21 34
>> for i=0:5:20, i, end
i=
0
i=
5
i=
10
i=
15
i=
20
El bucle condicional, itera mientras se cumpla la condicin, ejemplo
>> x=36; while x>1; x=x/3, end
x=
12
x=
4
x=
1.3333
x=
0.4444
MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

1.8 Relaciones
Relaciones en MATLAB son mostradas en la tabla 1.2.
Note la diferencia entre = e igual lgico ==. El operador lgico esta dado en
la tabla 1.3. El resultado es 0 (falso) o 1 (verdadero), como en
>> 3<5
ans =
1
>> 3>5
ans =
0
>> 3==5
ans =
0

Tabla 1.2 Algunas relaciones de operadores


<
>
<
=
>
=
=
=

Less than
Greater than
Less or equal than
Greater or equal
than
Equal to
Not equal

Tabla 1.3 Operador Lgico

&
|

and
or
not

>> a=rand(4), b=triu(a), a==b


a=
0.8147
0.9058
0.1270
0.9134

0.6324
0.0975
0.2785
0.5469

b=
0.8147
0
0
0

0.6324 0.9575 0.9572


0.0975
0.9649 0.4854
0
0.1576
0.8003
0
0
0.1419

MatLab

0.9575
0.9649
0.1576
0.9706

0.9572
0.4854
0.8003
0.1419

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.
ans =
1
0
0
0

1
1
0
0

1
1
1
0

1
1
1
1

1.9 Relacin Escalar


>> a=rand(3,4)
a=
0.4387
0.3816
0.7655

0.7952
0.1869
0.4898

0.4456
0.6463
0.7094

0.7547
0.2760
0.6797

Table 1.4 Funciones escalares


sin
asin exp
abs
cos
acos log
sqrt
tan
atan rem sign
>> a=rand(2,3)
a=
0.8909 0.5472
0.9593 0.1386

0.1493
0.2575

>> b=sin(a)
b=
0.7776 0.5203
0.8188 0.1382

0.1487
0.2547

>> c=sqrt(b)
c=
0.8818 0.7213
0.9049 0.3717

0.3857
0.5047

round
floor
ceil

1.10 Funciones vectoriales


Funciones de MATLAB Sum operan sobre vectores solamente, tales como los ilustrados
en la tabla 1.5.
Tabla 1.5 Funcin Vectorial
max
sum
min
prod

median
mean

any
all

Considere por ejemplo vector X = 1: 10. La suma, la media y los valores mximos son
evaluados como
>> x=1:10
x=
1
2
3

10

>> sum(x)
ans =
MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.
55
>> mean(x)
ans =
5.5000

1.11 Funciones matriciales


Algunas funciones de matriz importantes se enumeran en la tabla 1.6.
Tabla 1.6 Matriz de funciones
eig
Eigenvalues and eigenvectors
chol Cholesky factorization
inv
Inverse
lu
LU decomposition
qr
QR factorization
schu Schur decomposition
r
poly Characteristic polynomial
det
Determinant
size
Size of a matrix
norm 1-norm, 2-norm, F-norm, -norm
cond Conditioning number of 2-norm
rank Rank of a matrix

Valores propios y vectores propios


factorizacin Cholesky
inversa
descomposicin LU
factorizacin QR
Schur descomposicin
polinomio caracterstico
Determinante
Tamao de una matriz
1-norma, 2-norma, F-norma, -norma
nmero acondicionado de 2-norma
Rango de una matriz

En algunos casos estas funciones pueden utilizar ms de un argumento de salida, como


en
>> A=rand(2)
A=
0.1966 0.6160
0.2511 0.4733
Si queremos obtener los valores propios solamente,
>> y=eig(A)
y=
-0.0820
0.7519
Si queremos obtener los vectores propios y valores propios de la
matriz A
>> [V,D]=eig(A)
V=
-0.9112 -0.7428
0.4120 -0.6695
D=
-0.0820
0
0 0.7519
MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

OPERADORES ARITMTICOS
MATLAB puede operar con matrices por medio de operadores y por medio de
funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta ('), as
como la funcin invertir inv( ).
Tabla 1.6b Los operadores matriciales de MATLAB son los siguientes:
+
adicin o suma

sustraccin o resta
*
multiplicacin
'
traspuesta
^
potenciacin
\
divisin-izquierda
/
divisin-derecha
.*
producto elemento a elemento
./ y .\
divisin elemento a elemento
.^
elevar a una potencia elemento a elemento
>> A=[1 2;-1 2], b=[2;1],x=A\b
A=
1
2
-1
2
b=
2
1
x=
0.5000
0.7500
1.12 Submatrices
En MATLAB que es posible manipular matrices con el fin de hacer que el cdigo ms
compacto o ms eficiente. Por ejemplo, usando el colon podemos generar vectores,
como en
>> x=10:0.5:13
x=
10.0000 10.5000 11.0000 11.5000 12.0000 12.5000 13.0000
>> x=0:pi/4:pi
x=
0

0.7854

1.5708

2.3562

3.1416

>> b=sin(x)
b=
0 0.7071

1.0000

0.7071

0.0000

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.
>> [x' b']
ans =
0
0.7854
1.5708
2.3562
3.1416

0
0.7071
1.0000
0.7071
0.0000

Este tipo de programacin por vectorizacin es bastante eficiente, no se


utilizan ciclos for/end.
Esta eficiencia se puede ver en la generacin de una tabla de senos,
>> a=rand(2,3)
a=
0.8407 0.8143
0.2543 0.2435

0.9293
0.3500

>> a(2,2)
ans =
0.2435
>> a=rand(2,3)
a=
0.3517
0.8308

0.5853
0.5497

0.9172
0.2858

>> a(2,2)
ans =
0.5497
>> a(1:2,2:3)
ans =
0.5853 0.9172
0.5497 0.2858
>> a(1,end)
ans =
0.9172
>> a(1,:)
ans =
0.3517

0.5853

0.9172

>> a(:,3)
ans =
0.9172
0.2858
Es interesante notar que las matrices se almacenan en la memoria de forma
lineal, a partir de la primera dimensin, segundo, y as sucesivamente. As
podemos acceder a los vectores, de hecho, por un solo ndice, como se
muestra a continuacin.
MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.
a=
0.3517
0.8308

0.5853
0.5497

0.9172
0.2858

>> a(1)
ans =
0.3517
>> a(2),a(3),a(4),a(5)
ans =
0.8308
ans =
0.5853
ans =
0.5497
ans =
0.9172
Otra forma de introducir los subndices y obtener los elementos de la matriz
>> a([1 2 3 4 5 6])
ans =
0.3517

0.8308

0.5853

0.5497

0.9172

0.2858

>> a(:)
ans =
0.3517
0.8308
0.5853
0.5497
0.9172
0.2858
Operaciones con elementos de las matrices
>> a=rand(2,3)
a=
0.7572 0.3804
0.7537 0.5678

0.0759
0.0540

>> b=rand(1,3)
b=
0.5308 0.7792

0.9340

>> a(1,:)=b
a=
0.5308 0.7792
0.7537 0.5678

0.9340
0.0540

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.
>> a(2,:)=0
a=
0.5308 0.7792 0.9340
0
0
0
>> a(2,3)=100
a=
0.5308 0.7792 0.9340
0
0 100.0000
Note en el ejemplo como incrementa automticamente el tamao de la
matriz
>> a(3,2)=20
a=
0.5308 0.7792 20.0000
0
0 100.0000
0 20.0000
0

1.12 indexacin Lgica


En MATLAB que es posible
a=
0.5308 0.7792 20.0000
0
0 100.0000
0 20.0000
0
>> a>5
ans =
0
0
0

0
0
1

1
1
0

Indexacin Lgica surgen de relaciones lgicas, resultando en una matriz


lgica, con elementos
0 1.
>> a(ans)=7
a=
0.5308 0.7792 7.0000
0
0 7.0000
0 7.0000
0
Esto ser muy til en los clculos de elementos finitos, en particular cuando
se imponen condiciones de contorno.

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

1.14 M-archivos, scripts y funciones


Un archivo M es un archivo de texto plano con los comandos de MATLAB, guardados
con la extensin .m. Los archivos M pueden ser secuencias de comandos de funciones.
Al utilizar el editor de MATLAB podemos insertar comentarios o declaraciones y luego
guardar o compilar el archivo-m. Tenga en cuenta que el signo de porcentaje%
representa un comentario. Ninguna declaracin despus de este signo ser ejecutada.
Los comentarios son muy tiles para documentar el archivo.
M-archivos son tiles cuando el nmero de declaraciones es grande, o cuando se quiere
ejecutarlo en una etapa posterior, o con frecuencia, o incluso para ejecutarlo en segundo
plano.
Un ejemplo simple de una secuencia de comandos es la siguiente.
%
%
%
%
%

program 1
programmer: IC/UNSA
date: 10/04/2015
propsito : mostrar cmo hacen archivos tipo M-files
data: a - matriz de nmeros; b: matriz de senos de a

a=rand(3,4);
b=sin(a);

Funciones actan como subrutinas en Fortran, donde es un conjunto particular de tareas


realizadas. Una funcin tpica se da a continuacin, donde en la primera lnea que
deberamos nombre a la funcin y dar los parmetros de entrada (m, n, p) entre
parntesis y la parmetros de salida (a, b, c) en parntesis cuadrados.
function [a,b,c] = fnombre(m,n,p)

1.15 Graphics
MATLAB le permite producir grficos de una manera sencilla, ya sea
en 2D o 3D se plotea.
1.15.1 Plot 2D
Usando el comando plot podemos producir plot 2D simples en una
figura, utilizando dos vectores con coordenadas x e y. Un ejemplo
sencillo
x=-4:0.02:4; y=sin(x);plot(x,y)

MatLab

Previo al Anlisis Estructural

IC/UNSA
F. Copa P.

Table 1.7 Algunos comandos grficos


Title
xlabel
ylabel
Axis([xmin,xmax,ymin,y
max])
Axis auto
Axis square
Axis equal
Axis off
Axis on

Title
x-axis legend
y-axis legend
Sets limits to axis

ttulo
la leyenda del eje x
leyenda eje y
Establece lmites al eje

Automatic limits
Same scale for both
axis
Same scale for both
axis
Removes scale
Scales again

lmites automticos
Misma escala para ambos
ejes
Misma escala para ambos
ejes
elimina escala
Escalas de nuevo

>> x=0:.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x);


>> plot(x,y1,,x,y2,:,x,y3,+)

MatLab

Previo al Anlisis Estructural

You might also like