Documente Academic
Documente Profesional
Documente Cultură
.
Si no se indica el valor de n, por defecto es 100.
>> v1=linspace(4,20,8)
v1 = 4.0000 6.2857 8.5714 10.8571 13.1429 15.4286
17.7143 20.0000
>> v2=linspace(4,20,9)
V2 = 4 6 8 10 12 14 16 18 20
02 ARRAYS Lic. Amado Malca Villalobos
4
>> v3=linspace(4,20,-9)
v3 = 20
>> v4=linspace(3.5,-20.5)
v4 = Columns 1 through 4 Columns 97 through 100
3.5000 3.2576 3.0152 20.0152 -20.2576 -20.5000
>>
CREACION DE ARRAY BIDIMENSIONALES (MATRICES)
En este caso los nmeros se distribuyen en filas (horizontal) y
columnas (vertical). Son utilizadas en el Algebra Lineal, y se usan
para linealizar los problemas, es decir para suavizarlos.
Los elementos de una matriz se ingresan fila por fila, separados por
punto y coma. Tambin se pueden separar las filas por un enter.
_ var [ _ ; _ ;.......; _ ] nombre iable fila uno fila dos ultima fila =
_ var [ _
_
....
_ ]
nombre iable fila uno
fila dos
ultima fila
=
Considere la matriz A de tres filas y cuatro columnas:
5 8 4 3
5 2 1 0
6 9 2 5
A
| |
|
=
|
|
\ .
>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A =
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A=[6 8 -4 3
5 2 1 0
6 9 2 -5]
A =
6 8 -4 3
5 2 1 0
6 9 2 -5
02 ARRAYS Lic. Amado Malca Villalobos
5
>> A=[6 8 -4 3,5 2 1 0,6 9 2 -5]
A = 6 8 -4 3 5 2 1 0 6 9 2 -5
>> a=8;b=sqrt(5);m=exp(3);p=pi;
>> D=[a+b b+m p+a+b;m+log(8) 2*a+7*b sin(pi/2)]
D = 10.2361 22.3216 13.3777
22.1650 31.6525 1.0000
>>
Tambin una matriz se puede crear fila por fila con el comando
linspace y el operador dos puntos, ya descritos anteriormente.
>> D=[linspace(3,11,5);2 7 2 5 7;linspace(1,6,5)]
D = 3.0000 5.0000 7.0000 9.0000 11.0000
2.0000 7.0000 2.0000 5.0000 7.0000
1.0000 2.2500 3.5000 4.7500 6.0000
>> D=[linspace(8,-8,5);2:7:35;linspace(11,16,5);5:-2:-4]
D = 8.0000 4.0000 0 -4.0000 -8.0000
2.0000 9.0000 16.0000 23.0000 30.0000
11.0000 12.2500 13.5000 14.7500 16.0000
5.0000 3.0000 1.0000 -1.0000 -3.0000
>>
Creacin de matrices bsicas
En el momento de la programacin, es necesario inicializar la o las
variables con algn valor inicial, que por lo general es 1 0. Para
ello necesitaremos la creacin de algunos arrays con estos nmeros.
Comando Descripcion
A=zeros(m,n) Crea una matriz de orden m n , con ceros
B=zeros(n) Crea una matriz de orden n n , con ceros
C=ones(m,n) Crea una matriz de orden m n , con unos
D=ones(n) Crea una matriz de orden n n , con unos
E=eye(n) Crea la matriz de orden n n , con unos en la
diagonal, y ceros en el resto de lugares
F=eye(m,n) Crea la matriz de orden m n , con unos en
la diagonal principal, y ceros en el resto
>> A=zeros(2,3)
A = 0 0 0
0 0 0
02 ARRAYS Lic. Amado Malca Villalobos
6
>> A=zeros(2)
A = 0 0
0 0
>> B=eye(3,5)
B = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
>> D=ones(3,5)
D = 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>>
El operador transposicin
El operador transposicin, cuando se aplica a un array, transforma la
fila en columna y viceversa. El comando se expresa solo con una
comilla simple: ' (alt 39)
Ademas tiene las siguientes propiedades:
( )
' ' ' A B A B + = +
( )
' ' ' A B A B =
( )
' ' ' A B B A =
>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A = 6 8 -4 3
5 2 1 0
6 9 2 -5
>> A'
ans = 6 5 6
8 2 9
-4 1 2
3 0 -5
>>
Manipulacin de Arrays
A veces se hace necesario la extraccin, cambio o reduccin de
trminos de un array. Tambin a veces se necesita agregar elementos
a estos arreglos.
Vectores
>> v1=[6 8 -4 3 2 1 0 9 2 -5]
v1 = 6 8 -4 3 2 1 0 9 2 -5
>>
02 ARRAYS Lic. Amado Malca Villalobos
7
Reasignando valores
>> v1(6)
ans = 1
>> v1(6)=12
v1 = 6 8 -4 3 2 12 0 9 2 -5
>> v1(3)+5*v1(7)-6*v1(2)
ans = -52
>> 8*v1(2)+7*v1(5)-(v1(7)+2)^2
ans = 74
>>
Matrices
Al igual que en el caso de vectores se tiene las mismas inquietudes.
para ello hay que tener en cuenta que, si A es una matriz de orden
m n , entonces se tienen las siguientes opciones para los elementos
de tal matriz:
( )
i j
m n
A a
=
matriz de orden m n
( )
, A i j
elemento de A, ubicado en la fila i y columna j.
( ) A k
k-esimo elemento deA
>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A = 6 8 -4 3
5 2 1 0
6 9 2 -5
>> A(2,3)
ans = 1
>> A(9)
ans = 2
>> A(10)
ans = 3
>> A(3,4)
ans = -5
>> A(3),A(9),A(11),A(3)+6*A(9)-8*A(11)
ans = 6
ans = 2
ans = 0
ans = 18
>>
02 ARRAYS Lic. Amado Malca Villalobos
8
Utilizacin de dos puntos en la manipulacin de arrays
El operador dos puntos genera un rango de nmeros, en un array.
En vectores
Expresin Descripcion
( )
: v
Indica todos los elementos del vector v.
( )
: v m n
Indica los elementos del vector, desde la
posicin m hasta la posicin n.
( )
: : v m k n
Indica los elementos del vector, desde la
posicin m hasta la posicin n, con un
incremento k.
>> u=[6 8 -4 3 2 1 0 9 2 -5]
u = 6 8 -4 3 2 1 0 9 2 -5
>> u(:)
ans = 6
8
-4
3
2
1
0
9
2
-5
>> u(3:7)
ans = -4 3 2 1 0
>> u(1:2:10)
ans = 6 -4 2 0 2
>> u(9:-1:1)
ans = 2 9 0 1 2 3 -4 8 6
>>
En Matrices
Expresin Descripcion
( )
:, A n
Indica todos los elementos de la columna n
( )
,: A m
Indica todos los elementos de la fila m
( )
:, : A m n
Indica los elementos de las columnas m hasta la n.
( )
: ,: A m n
Indica los elementos de las filas m hasta la n.
02 ARRAYS Lic. Amado Malca Villalobos
9
( )
: , : A m n p q
Indica los elementos de las filas m hasta la n, y las
columnas desde la p hasta la q.
>> A=[6 8 -4 3 6 1;5 2 1 0 9 8;6 9 2 -5 7 0;4 8 12 3 9 2]
A = 6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
>> A(:,6)
ans = 1
8
0
2
>> A(3,:)
ans = 6 9 2 -5 7 0
>> A(2:3,3:6)
ans = 1 0 9 8
2 -5 7 0
>> A(2:3,6:-1:1)
ans = 8 9 0 1 2 5
0 7 -5 2 9 6
>> A,B=A([1,4],[2,4,5])
A =
6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
B = 8 3 6
8 3 9
>>
Adicin de nuevos elementos a variables ya creadas
En un array que ya ha sido creado se pueden agregar o modificar
elementos, con solamente asignar un valor.
En vectores
>> u=[6 8 -4 3 2 ]
u = 6 8 -4 3 2
>> u(8)=12
u = 6 8 -4 3 2 0 0 12
>> u(3)=42
02 ARRAYS Lic. Amado Malca Villalobos
10
u = 6 8 42 3 2 0 0 12
>> u(3:7)=2*u(3:7)
u = 6 8 84 6 4 0 0 12
>> u(3:7)=-4*u(3:7)
u = 6 8 -336 -24 -16 0 0 12
>> w(7)=15
w = 0 0 0 0 0 0 15
>> w(1:6)=1:6
w = 1 2 3 4 5 6 15
>> v=[u w]
v = 6 8 -336 -24 -16 0 0 12 1 2 3 4 5 6 15
>>
En matrices
>> A=[6 8 3 6;5 1 0 9;6 9 7 8]
A =
6 8 3 6
5 1 0 9
6 9 7 8
>> A(4,5)=60
A =
6 8 3 6 0
5 1 0 9 0
6 9 7 8 0
0 0 0 0 60
>> A(:,5)=20:10:50
A =
6 8 3 6 20
5 1 0 9 30
6 9 7 8 40
0 0 0 0 50
>> A(4,:)=17:10:57
A =
6 8 3 6 20
5 1 0 9 30
6 9 7 8 40
17 27 37 47 57
>> D=eye(4)
D =
1 0 0 0
0 1 0 0
02 ARRAYS Lic. Amado Malca Villalobos
11
0 0 1 0
0 0 0 1
>> E=[A D]
E =
6 8 3 6 20 1 0 0 0
5 1 0 9 30 0 1 0 0
6 9 7 8 40 0 0 1 0
17 27 37 47 57 0 0 0 1
>> E(:,5)=ones(4,1)
E =
6 8 3 6 1 1 0 0 0
5 1 0 9 1 0 1 0 0
6 9 7 8 1 0 0 1 0
17 27 37 47 1 0 0 0 1
>>
Eliminacin de elementos
Para eliminar filas y/o columnas en un array, solo hay que asignarle
un array vacio: [ ]
>> p=[6 8 -4 3 2]
p = 6 8 -4 3 2
>> p(3)=[]
p = 6 8 3 2
>> p(1)=[]
p = 8 3 2
>>
>> G=[16 82 31 16;55 77 40 90;66 23 56 84]
G = 16 82 31 16
55 77 40 90
66 23 56 84
>> G(:,2)=[]
G = 16 31 16
55 40 90
66 56 84
>> G(1,:)=[]
G = 55 40 90
66 56 84
>>
02 ARRAYS Lic. Amado Malca Villalobos
12
FUNCIONES PARA LA MANIPULACION DE ARRAYS
Existe una gran variedad de funciones en MatLab, para cada
cometido. Estas se pueden hallar en la ventana de ayuda del MatLab.
Funcin Descripcin Ejemplo
( )
length v
Devuelve el nmero de
elementos del vector v.
>> v=[6 8 -4 3 2]
v = 6 8 -4 3 2
>> length(v)
ans = 5
>> w=[]
w = []
>> length(w)
ans = 0
( )
length A
Devuelve el valor mximo
de {m,n}, siendo m n
el orden de la matriz A.
>> A=[6 8; 3 6;5 1]
A = 6 8
3 6
5 1
>> length(A)
ans = 3
( )
size A
Devuelve un vector fila
[m,n], donde m y n
representan el tamao de la
matriz A
>> A
A = 6 8
3 6
5 1
>> size(A)
ans = 3 2
( )
, , reshape A m n
Reordena una matriz A, de
orden r s a una de orden
m n . Siempre que
r s m n =
>> A
A = 6 8
3 6
5 1
0 9
>> reshape(A,2,4)
ans = 6 5 8 1
3 0 6 9
( )
diag v
Si v es un vector, se crea
una matriz cuadrada con
los elementos de v en la
diagonal
>> v=[6 8 2]
v = 6 8 2
>> diag(v)
ans =
6 0 0
0 8 0
0 0 2
( )
diag A
Si A es una matriz, se crea
un vector a partir de los
elementos de la diagonal
de A
>> A=[120 56 80 78;13 450
67 45;89 56 610 56]
A = 120 56 80 78
13 450 67 45
89 56 610 56
>> diag(A)
ans = 120
450
610
02 ARRAYS Lic. Amado Malca Villalobos
13
Variables en Memoria
Para visualizar las variables que aun estn en memoria, cuando se
est ejecutando MatLab, se usa el comando
who
.
Tambin tenemos el comando
whos
, que adems de lo anterior visualiza el tamao,
bytes y clase de las variables actuales en la memoria.
>> who
Your variables are:
A B D E G ans p u v w
>> whos
Name Size Bytes Class Attributes
A 3x4 96 double
B 2x3 48 double
D 4x4 128 double
E 4x8 256 double
G 2x3 48 double
ans 3x1 24 double
p 1x2 16 double
u 1x5 40 double
v 1x3 24 double
w 0x0 0 double
>>
Problemas de aplicacin
Problema 2.1: Creacin de una matriz
Crear una matriz de orden 4 5 , en la cual las primeras dos filas sean ceros y las dos
siguientes sean unos.
Solucin:
>> F=zeros(2,5)
F = 0 0 0 0 0
0 0 0 0 0
>> G=ones(2,5)
G = 1 1 1 1 1
1 1 1 1 1
>> H=[F; G]
H = 0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
>>
Tambin puede hacerse as:
>> K(1:2,:)=zeros(2,5)
K =
0 0 0 0 0
0 0 0 0 0
>> K(3:4,:)=ones(2,5)
K =
0 0 0 0 0
0 0 0 0 0
02 ARRAYS Lic. Amado Malca Villalobos
14
1 1 1 1 1
1 1 1 1 1
>>
Problema 2.2: Creacin de una matriz
Crear una matriz
6 6
en la cual las dos filas centrales, junto con las dos columnas
centrales, sean uno, siendo el resto de elementos ceros.
Solucin:
>> D=zeros(6,6)
D =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
>> D(3:4,:)=ones(2,6)
D =
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0
>> D(:,3:4)=ones(6,2)
D =
0 0 1 1 0 0
0 0 1 1 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 1 1 0 0
0 0 1 1 0 0
Problema 2.3: Manipulacin de matrices
Sean dos matrices, una A de tamao 5 6 , y otra B de tamao 3 5 . Sea tambin un
vector v de longitud 9.
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21
A
| |
|
|
|
=
|
|
|
\ .
5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80
B
| |
|
=
|
|
\ .
( )
99 98 97 96 95 94 93 92 91 v =
Y luego con un solo comando que remplace:
a) Las cuatro ltimas columnas de las filas 1 y 3 de A por las cuatro primeras
columnas de las primeras dos filas de la matriz B.
b) Las cuatro ltimas columnas de la cuarta fila de A por los elementos 5 a 8 de v.
02 ARRAYS Lic. Amado Malca Villalobos
15
c) Las cuatro ltimas columnas de la quinta fila de A por las columnas 3 a 5 de la
tercera fila de B.
Solucin:
Datos Cambios con tres comandos
>>A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21]
A =
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21
>> B=[5:5:30;30:5:55;55:5:80]
B =
5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80
>> v=[99:-1:91]
v = 99 98 97 96 95 94 93 92 91
>>A([1 3],[3 4 5 6])=B([1 2],[1 2 3 4])
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 11 14 17 20
6 9 12 15 18 21
>> A(4,[3:6])=v([5:8])
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 12 15 18 21
>> A(5,[3:6])=B(3,[2:5])
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75
>>
Datos Con un solo comando
>> A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21];
>> B=[5:5:30;30:5:55;55:5:80];
>> v=[99:-1:91];
>> A([1 3 4 5],[3:6])=[B([1
2],[1:4]);v([5:8]);B(3,[2:5])]
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75
02 ARRAYS Lic. Amado Malca Villalobos
16
Cadenas de caracteres y variables de tipo string
Una cadena o string es simplemente un array de caracteres. Para
crear una cadena solo es necesario teclear los caracteres que la
formen entre comillas simples.
No se incluye la letra ee y los acentos.
>> M=['calculo' 'ad hoc' '%&$j']
M =calcuload hoc%&$j
>> M=['calculo';'ad hoc';'% & $ j']
M =
calculo
ad hoc
% & $ j
>> N=['geo','$5437','? PO']
N =geo$5437? PO
>> N=['geofi','$5437','? PO']
N =geofi$5437? PO
>>