Académique Documents
Professionnel Documents
Culture Documents
1.1 Introducción
El entorno MATLAB (MATrix LABoratory) es un software cuya marca comercial es
de MathWorks, Inc., Se trata de un sistema de programación integrado, incluyendo
interfaces gráficas y un gran número de cajas de herramientas especializadas. El
MATLAB es usado ampliamente por ingenieros y científicos.
>> a=[1 2; 3 4]
a=
1 2
3 4
Tenga en cuenta el punto y coma al final de cada línea separa las filas matriz. También
podemos generar matrices por funciones predefinidas, tales como matrices aleatorias
>> rand(2)
ans =
0.8147 0.1270
0.9058 0.9134
Matriz diagonal
>> eye(2)
ans =
1 0
0 1
Matriz de ones
>> ones(2)
ans =
1 1
1 1
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.1117 0.6787
0.3185 0.0900 0.1363 0.4952
>> b=rand(2,4)
b=
0.1897 0.1476 0.8507 0.9296
0.4950 0.0550 0.5606 0.6967
>> c=a+b
c=
0.9797 0.6817 0.9624 1.6083
0.8135 0.1449 0.6969 1.1918
1.4 declaraciones (Statements)
Las declaraciones son operadores, funciones y variables, siempre produciendo una
matriz que puede ser utilizado más tarde. Algunos ejemplos de declaraciones:
>> a=7
a=
7
>> b=2*a
b=
14
>> e=2*magic(2)
e=
2 6
8 4
Sintaxis
M = magic(n)
Descripción
M = magic (n), devuelve una matriz n-by-n construida a partir de los enteros 1 a n^2
cuyas sumas de fila y columna son iguales. El orden n debe ser un escalar mayor o igual
que 3.
>> magic(2)
ans =
1 3
4 2
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
Los valores de los números son de acuerdo al tamaño del orden por ejemplo n=3, por
tanto la matriz es cuadrada de 3x3 = 9 y se ensambla la matriz con los números del 1 al
9, y la suma de cada fila siempre da 15 del mismo modo las columnas.
Algunos ejemplos de estas funciones se dan en los siguientes comandos (aquí para
construir matrices por bloques, es decir, ensamble de la matriz en base a submatrices)
>> a
a=
1 2 3
4 5 6
7 8 9
b=
1 2 3 0 0
4 5 6 0 0
7 8 9 0 0
0 0 0 1 1
0 0 0 1 1
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
>> f=[1 2]
f=
1 2
i=
0
i=
5
i=
10
i=
15
i=
20
x=
4
x=
1.3333
x=
0.4444
1.8 Relaciones
Relaciones en MATLAB son mostradas en la tabla 1.2.
Note la diferencia entre ‘=’ e igual lógico ‘==’. El operador lógico 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
∼ not
a=
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
b=
0.8147 0.6324 0.9575 0.9572
0 0.0975 0.9649 0.4854 Matriz triangular superior matriz up
0 0 0.1576 0.8003
0 0 0 0.1419
ans =
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
>> a=rand(3,4)
a=
0.4387 0.7952 0.4456 0.7547
0.3816 0.1869 0.6463 0.2760
0.7655 0.4898 0.7094 0.6797
>> a=rand(2,3)
a=
0.8909 0.5472 0.1493
0.9593 0.1386 0.2575
>> b=sin(a)
b=
0.7776 0.5203 0.1487
0.8188 0.1382 0.2547
>> c=sqrt(b)
c=
0.8818 0.7213 0.3857
0.9049 0.3717 0.5047
Considere por ejemplo vector X = 1: 10. La suma, la media y los valores máximos son
evaluados como
>> x=1:10
x=
1 2 3 4 5 6 7 8 9 10
>> sum(x)
ans =
55
>> mean(x)
ans =
5.5000
En algunos casos estas funciones pueden utilizar más de un argumento de salida, como
en
>> A=rand(2)
A=
0.1966 0.6160
0.2511 0.4733
>> y=eig(A)
y=
-0.0820
0.7519
>> [V,D]=eig(A)
V=
-0.9112 -0.7428
0.4120 -0.6695
D=
-0.0820 0
0 0.7519
OPERADORES ARITMÉTICOS
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 función invertir inv( ).
>> 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
ans =
0 0
0.7854 0.7071
1.5708 1.0000
Este tipo de programación por vectorización es bastante eficiente, no se utilizan ciclos for/end.
Esta eficiencia se puede ver en la generación de una tabla de senos,
>> a=rand(2,3)
a=
0.8407 0.8143 0.9293
0.2543 0.2435 0.3500
>> a(2,2)
ans =
0.2435
>> a=rand(2,3)
a=
0.3517 0.5853 0.9172
0.8308 0.5497 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 dimensión, segundo, y así sucesivamente. Así podemos acceder a los vectores, de
hecho, por un solo índice, como se muestra a continuación.
a=
0.3517 0.5853 0.9172
0.8308 0.5497 0.2858
>> a(1)
>> a(2),a(3),a(4),a(5)
ans =
0.8308
ans =
0.5853
ans =
0.5497
ans =
0.9172
ans =
>> a(:)
ans =
0.3517
0.8308
0.5853
0.5497
0.9172
0.2858
>> a=rand(2,3)
a=
0.7572 0.3804 0.0759
0.7537 0.5678 0.0540
>> b=rand(1,3)
b=
0.5308 0.7792 0.9340
>> a(1,:)=b
a=
0.5308 0.7792 0.9340
0.7537 0.5678 0.0540
>> a(2,:)=0
a=
0.5308 0.7792 0.9340
0 0 0
>> a(2,3)=100
>> a(3,2)=20
a=
0.5308 0.7792 20.0000
0 0 100.0000
0 20.0000 0
1.12 indexación Lógica
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 1
0 0 1
0 1 0
Indexación Lógica surgen de relaciones lógicas, resultando en una matriz lógica, 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 cálculos de elementos finitos, en particular cuando se imponen
condiciones de contorno.
a=rand(3,4);
b=sin(a);
Funciones
Actúan como subrutinas en Fortran, donde es un conjunto particular de tareas realizado.
Una función típica se da a continuación, donde en la primera línea que deberíamos
nombre a la función y dar los parámetros de entrada (m, n, p) entre paréntesis y la
parámetros de salida (a, b, c) en paréntesis cuadrados.
1.15 Graphics
Ejemplo
Crear un archivo de comandos y escriba el siguiente código -
x = [0 : 0.01: 10];
Generación de sub-graficas
Cuando se crea una serie de diagramas en la misma figura, cada una de estos
diagramas se llama un subplot. El comando trama secundaria se utiliza para la
creación de subplot.
subplot(m, n, p)
Ejemplo.-
Graficar las dos funciones siguientes:
y = e−1.5xsin(10x)
y = e−2xsin(10x)
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
1.15.2 Plot 3D
Sintaxis
plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,'PropertyName',PropertyValue,...)
plot3(axes_handle,...)
h = plot3(...)
Descripción
The plot3 function displays a three-dimensional plot of a set of data points.
plot3(X1,Y1,Z1,...), where X1, Y1, Z1 are vectors or matrices, plots one or more lines in three-
dimensional space through the points whose coordinates are the elements of X1, Y1, and Z1.
plot3(axes_handle,...) plots into the axes specified by axes_handle instead of into the current
axes (gca). The option, axes_handle can precede any of the input combinations in the previous
syntaxes.
h = plot3(...) returns a column vector of charting line handles, with one handle per object.
sx(a) = 𝑎 ∙ 𝑠𝑒𝑛(𝑎)
cy(a) = 𝑎 ∙ 𝑐𝑜𝑠(𝑎)
z(a) = 𝑎
a = 0:pi/60:6*pi;
sx1 = a.*sin(a);
cy1 = a.*cos(a);
z1 = a;
sx2 = a/5.*sin(a);
cy2 = 1.5*a.*cos(a);
z2 = a/1.5;
figure
plot3(sx,cy,z1,sx2,cy2,z2)