Vectores y Matrices
1
Universidad Nacional de San Agustín de Arequipa
CURSO DE MATLAB BASCO CA!TULO "ECTORES # MATRCES $ARRA#S% El array (arreglo) es una estructura fundamental que MatLab utiliza para almacenar y manipular datos. En los arreglos unidimension unidimensionales ales (vectores) los números números están agrupados agrupados en filas o columnas. En los los array arrays s bidime bidimensi nsion onale ales s (matri (matrices ces)) los elemen elementos tos se distri distribuy buyen en en filas filas y columnas. &'( Creaci)n de "ectores "ectores Un vector es una sucesin de números (elementos) distribuidos en una fila o columna. a% Creaci)n Creaci)n de de un vector vector a partir partir de una lista lista !e deberá teclear los números (elementos) dentro de corc"etes # $ Nombre_variable Nombre_variable = [elementos del vector] %ector %ector fila& entre cada elemento una coma o espacio' dentro de corc"etes %ector columna& entre cada elemento teclearse punto y coma ( *) Eemplo * +.,& -ados los datos de una tabla demográfica /o ,012 ,013 ,011 ,004 ,00+ ,002 ,003 5oblaci ,+6 ,74 ,73 ,28 ,81 ,61 +,, n (millones) 9enerar un vector fila y un vector columna& Solución: :: yr;#+44, +44+ +447 +442 +448 +443$ yr ; +44, +44+ +447 +442 :: yr,;#+446'+441'+440$ yr,;#+446'+441'+440$ yr, ; +446 +441 +440 9enerar un vector columna :: pob;#,+6<,74<,24<,83<,37<,6 pob;#,+6<,74<,24<,83<,37<,6,$ ,$ pob ; ,+6 ,74 ,24 ,83 ,37 ,6,
+448
+443
:: pob,;#,74 ,24 ,84$ pob, ; ,74 ,24 ,84
+% Creaci)n i)n de un vector con distancia constante a partir de especi,icaci)n del pri-er t.r-ino/ del intervalo 0 el 1lti-o t.r-ino La diferencia entre los elementos es siempre la misma Nombre_variable Nombre_variable = [m:q:n] Nombre_variable Nombre_variable = m:q:n
Ing. Héctor G. Bolaños Sosa
la
Vectores y Matrices
2
Eemplo * +.+& 9enerar un vector fila y vector columna con valores de ,4 a ,1' con incrementos de ,. Solución: :: a;#,4&,1$ :: a;#,4&,1$= a; a; ,4 ,, ,4 ,, ,+ ,7 ,2 ,8 ,3 ,6 ,1 ,+ ,7 ,2 ,8 ,3 ,6 ,1 Eemplo * +.7& 9enerar los siguientes vectores& a) %ector %ector fila fila con valo valores res entre entre , a ,7' ,7' con increme incrementos ntos de de + b) %ector %ector fila fila con valore valores s entre ,.8 ,.8 a +.,' con incre incremento mentos s de 4., c) %ector %ector column columna a con valores valores entre entre >,4 a >1.8< >1.8< con increm incremento entos s de 4.+ Solución a%:: a%:: ?;#,&+&,7$ ?; , 7 8 6
0
,,
,7
+%:: +%:: y;#,.8&4.,&+.,$ y; ,.8444 ,.3444 ,.6444 ,.1444 ,.0444 +.4444 +.,444
c%:: c%:: s;#>, s;#>,4& 4&4. 4.+& +&>> 1.8$= s; >,4.4444 >0.1444 >0.3444 >0.2444 >0.+444 >0.4444 >1.1444 >1.3444
c% Creaci)n de un vector con intervalo constante a partir de la espe especi ci,i ,ica caci ci)n )n del del pripri-er er 0 1lti 1lti-o -o t.rt.r-in ino/ o/ así así co-o co-o el n1-e n1-ero ro de t.r-inos' Nombre_variable Nombre_variable = linspace(xi,xf,n) Eem Eempl plo o *+. *+.2& 2& 9ene 9enera rarr un vect vector or de 3 elem elemen ento tos s ' empe empeza zand ndo o en 4 y terminando en 1 :: va;linspace(4'1'3) va;linspace(4'1'3) va ; 4 ,.3444 7.+444 2.1444 3.2444 1.4444 Eempl Eemplo o *+.8 *+.8&& 9enera 9enerarr un vector vector de ,, eleme elemento ntos s empeza empezando ndo en 74 y terminando en ,4 :: vb;linspace(74',4',,) vb ; 74 +1 +3 +2 ++ +4 ,1 ,3 ,2 ,+ ,4 Eemplo *+.3& 9enerar un vector fila de 8 elementos con número aleatorios :: rand(,'8) ans ;
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
4.7407
3
4.1718
4.831,
4.7642
4.64+6
Eemplo *+.6& generar una vector columna de 8 elementos con números aleatorios :: rand(8',) ans ; 4.72+4 4.+106 4.72,+ 4.872, 4.6+6, Nombre_variable = logspace(a,b) 9enera un vector fila de de 84 puntos de logaritmos entre ,4@ y ,4 b. :: logspace(,'+) ans ; Aolumns , t"roug" 8 ,4.44 ,4.21 ,4.00 ,,.8, ,+.46 BBB.. Aolumns 23 t"roug" 84 1+.13 13.18
0,.47
08.2,
,44.44
Nombre_variable = logspace(a,b,n) 9enera un vector fila de n elementos de logaritmos entre ,4@ y ,4 b :: logspace(,'+'8) ans ; ,4.44 ,6.61 7,.3+ 83.+7 ,44.44 :: y;logspace(,'7'7) y; ,4 ,44 ,444 r;logspace(,'2'2) r; ,4 ,44 :: format banC :: s;logspace(,'7'2) s; ,4.44 23.2+
,444
,4444
+,8.22
,444.44
&'& Creaci)n de Matrices Una matriz se define por< el número de filas y por el número de columnas. sD una matriz de m x n' tiene m filas y n columnas' y el producto de m or n nos da el tama/o de la matriz
Nombre_variable = [elementos 1ra fila; elementos da fila! elementos "ra fila; elementos #ta fila; $%%; elementos <ima fila] Los elementos de una fila pueden estar separados con coma (') o por un espacio. !e debe colocar punto y coma (<) despus de cada fila. Elementos pueden ser& úmeros' e?presiones matemáticas' variables y funciones
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
!
Eemplo *+.1& 9enerar una matriz 7?7' con elementos números cualesquiera. Usar (<) despus de cada fila :: ;#8 78 27<2 63 1,<+, 7+ 24$ ; 8 78 27 2 63 1, +, 7+ 24 Eemplo *+.0& 9enerar una matriz de 7F7' con elementos números cualesquiera. Usar enter despus de cada fila :: G;#+4 74 24 +7 83 72 22 88 33$
G; +4 +7 22
74 83 88
24 72 33
Eemplo *+.,4& 9enerar una matriz + ? 7< con elementos que son variables y e?presiones matemáticas' siguientes&
cd = 6; e = 3; h = 4
j = cd * h; k = cos( pi / 4) n = h2 ; h * e Solución: :: cd;3
Co-andos 2eros/ ones 0 e0e Aomandos se utilizan para crear matrices que tiene elementos con valores especiales. • Aomando zeros(m'n)& crea matriz con todos los elementos ceros • Aomando ones(m'n)& crea matriz con todos los elementos unos • Aomando eye(n)& crea una matriz cuadrada cuya diagonal son unos y el resto son ceros Eemplo *+.,+& 9enerar las siguientes matrices& a) Matriz de 7?2' todos los elementos son ceros b) Matriz 2?7' todos los elementos son unos
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
"
c) Matriz cuadrada de 8?8' la diagonal debe ser unos' el resto de elementos son ceros Solución: :: zr;zeros(7'2) zr ; 4 4 4 4 4 4 4 4 4 4 4 4
:: nu;ones(2'7) nu ; , , , , , , , , , , , ,
:: dia;eye(8) dia ; , 4 4 4 , 4 4 4 , 4 4 4 4 4 4
4 4 4 , 4
4 4 4 4 ,
&'3 Operador de transposici)n os permite transformar las filas en columnas y viceversa Este operador se e?presa con una comilla simple ( 4) Eemplo *+.,7& !ea el vector fila G; #2 3 1$< transformar a vector columna :: ;#2 3 1$ ; 2 3 1
:: ;#2 3 1$= ; 2 3 1
Eemplo *+.,2& !ea el vector columna anterior' transformar a vector fila :: GG;= GG ; 2 3 1 Eemplo *+.,8& 9enerar una matriz de 7 ? +' usando el comando rand' luego transformar las filas en columnas. Usar variables para definir las matrices :: ;rand(7'+) ; 4.8++3 4.0606 4.114, 4.+6,2 4.,674 4.+8+7
:: G;= G; 4.8++3 4.0606
4.114, 4.+6,2
4.,674 4.+8+7
MAN!ULACON DE ARRA#S &'5 E6tracci)n de ele-entos Los elementos de un array (vector o matriz) se pueden manipular individualmente o en grupo. !e pueden e?traer elementos de los vectores o de las matrices desde alguna posicin(es) especDfica (s)' para una posterior operacin. &'5'(
"ectores La direccin de un elemento de un vector es su posicin en la Kila o columna
ve;#,4 +4 74 24$ ve(+);+4 ve(2);24 ve(C)< donde C es la posicin del elemento C del vector ve
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
#
ve$n%7 Una posici)n ve$n7-%7 posiciones ad8untas ve$9a c e:%7 varias posiciones no ad8untas Eemplo *+.,3& 9enerar un vector de 6 elementos' iniciando con , y terminando en ,4 (usar linspace). ealizar las siguientes operaciones& a) E?traer la posicin +' 7 y 2 b) signar a variables las posiciones + y 6 c) Efectuar una suma de los elementos + y 2
pos(1) 2 +
pos(7)
d) Efectuar la e?presin& e) Aambiar los valores del vector original' en las posiciones 7 con 244 y en la posicin , con ,44 Solución: :: ve;linspace(,',4'6) ve ; ,.4444 +.8444 2.4444 a% :: ve(+) ans ; +.8444
8.8444
:: ve(7)'ve(2) ans ; 2 ans ; 8.8444 +% !e pueden asignar a variables :: valor+;ve(+) valor+ ; +.8444
6.4444 1.8444 ,4.4444 :: valor6;ve(6) valor6 ; ,4 c% !e pueden efectuar operaciones matemáticas : suma;ve(+)ve(2) suma ; 1 d% :: valor;ve(,)J+sqrt(ve(6)) valor ; 2.,3+7
e% Se pueden ca-+iar los valores del vector :: ve(7);244 ve ; ,.4444 +.8444 244.4444 8.8444 6.4444 :: ve(,);,44 ve ; ,44.4444 +.8444 244.4444
8.8444
6.4444
1.8444 ,4.4444
1.8444 ,4.4444
Uso de los dos puntos $7% en la -anipulaci)n de vectores Los dos puntos se usan para acceder a un rango de elementos dentro de un vector va$7%& se refiera a todos los elementos del vector va (columna o fila) va$n7-%& se refiere a los elementos comprendidos entre las posiciones nym Eemplo *+.,6& E?traer posiciones aduntas 9enerar un vector fila iniciando en , "asta +4' con incrementos de +. E?traer los elementos de la posicin 7 a la 6 Solución: :: vb;#,&+&+4$ vb ; , 7 ; < = (( (3 ,8 ,6 ,0
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
:: u;vb(7&6) u; 8 6 0
$
Area un vector a partir de los elementos 7 al 6 del vector vb ,,
,7
Eemplo *+.,1& E?traer posiciones O aduntas 9enerar un vector fila iniciando en ,4 "asta 64' con incrementos de ,4. E?traer las posiciones , 7 y 3 Solución: :: v;#,4&,4&64$ v; (> +4 3> 24
&'5'&
84
?>
64
:: v(#, 7 3$) ans ; ,4 74 34
Matrices La direccin de un elemento de una matriz está definida a partir del número de fila (C) y columna (p) de la misma matriz
5ara el caso de elementos adyacentes se tienen los siguientes formatos& MAT$@/p%7 Un solo ele-ento MAT$a7+/7%7 ,ilas ad0acentes MAT$7/c7d%7 colu-nas ad0acentes MAT$a7B/c7d%7ntersecci)n de ,ilas 0 colu-nas ad0acentes 5ara el caso de elementos no adyacentes se tienen los siguientes formatos& MAT$9a c:/d%7 ilas a 0 c/ de la colu-na d MAT$9a c:/7%7 ilas a 0 c/ con todas las colu-nas MAT$9a c:/9d ,:%7 ntersecci)n de ,ilas a 0 c con colu-nas d 0, Eemplo *+.,0& 9enerar la matriz que se muestra adunta' y efectuar las siguientes operaciones& M.N(,',) a) E?traer el elemento (,',) M.N(+'7) b) E?traer el elemento (+'7) 7 ,, 3 8 c) Aambiar el elemento (7',) por el valor ,74 d) !umar el elemento (+'2) con el elemento 6 ,4 + 2 (,'+) Solución: : MN;#7 ,, 3 8<2 6 ,4 +<,7 0 4 1$ MN ; 7 ,, 3 8 2 6 ,4 + ,7 0 4 1 a) :: MN(7',) ans ; ,7 b) :: MN(+'7)
Ing. Héctor G. Bolaños Sosa
,7
0
4
1
c) !e pueden cambiar el valor de un solo elemento de la matriz :: MN(7',);,74 MN ; 7 ,, 3 8 2 6 ,4 + ,74 0 4 1 d) !e pueden efectuar operaciones matemáticas :: MN(+'2)MN(,'+)
Vectores y Matrices
ans ; ,4
%
ans ; ,7
Uso de los dos puntos $7% en la -anipulaci)n de -atrices Los dos puntos se usan para acceder a un rango de elementos dentro de una matriz (&'n)& !e refiere a los elementos de la columna n de la matriz (n'&)& !e refiere a los elementos de la fila n de la matriz (&'m&n)& !e refiere a los elementos entre las columnas m y n de la matriz (m&n'&)& !e refiere a los elementos entre las filas m y n de la matriz (m&n'p&q)& !e refiere a los elementos de la fila m a la n' y a los de la columna p a la q de la matriz Eemplo *+.+4& Elementos dyacentes !ea la matriz que se muestra' desarrollar lo siguiente& a) E?traer elementos de la tercera columna b) E?traer elementos de la segunda fila c) E?traer elementos de la última columna d) E?traer elementos de la última fila e) E?traer elementos de las filas + y 7 f) E?traer elementos de las columnas + y 7 g) E?traer elementos de las filas , y +' y las columnas + y 7 Solución :: MN;#7 ,, 3 8<2 6 ,4 +<,7 0 4 1$ MN ; 7 ,, 3 8 2 6 ,4 + ,7 0 4 1 a%:: ;MN(&'7) -efine el vector ' a partir ; de los elementos de la 3 tercera columna de la matriz ,4 MN 4
+%:: G;MN(+'&) G; 2 6 ,4 + c%:: -;MN(&'end) -; 8 + 1
d%:: E;MN(end'&) E; ,7 0 4 1 Ing. Héctor G. Bolaños Sosa
-efine el vector G' a partir de los elementos de la segunda fila de la matriz MN -efine el vector -' a partir de la última columna de la matriz MN
-efine el vector -' a partir de la última fila de la matriz MN
7
,,
3
8
2
6
,4
+
,7
0
4
1
Aolumna 7
7
,,
3
8
2
6
,4
+
,7
0
4
1
Aolumna end
7
,,
3
8
2
6
,4
+
,7
0
4
1
Vectores y Matrices
e%:: K;MN(+&7'&) K; 2 6 ,4 + ,7 0 4 1
,%:: 9;MN(&'+&7) 9; ,, 3 6 ,4 0 4 %:: P;MN(,&+'+&7) P; ,, 3 6 ,4
&
-efine el vector K' a partir de los elementos de las filas + y 7 de la matriz MN 7 a + s a l i K
7
,,
3
8
2
6
,4
+
,7
0
4
1
-efine el vector 9' a partir de los elementos de las columnas + y 7 de la matriz MN -efine el vector P' a partir de los elementos de las filas , a +' columnas + a 7 de la matriz MN. Los elementos resultantes son los intersectados
Aolumnas + a 7
+ a , s a l i K
7
,,
3
8
2
6
,4
+
,7
0
4
1
Eemplo *+.+,& E?traccin de elementos O adyacentes 9enerar una matriz de 2 ? 2 con números aleatorios' multiplicarse por el escalar ,4. -esarrollar lo siguiente& a) E?traer los elementos de la interseccin entre las filas , columna + b) E?traer todos los elementos de las filas , y 7. c) E?traer los elementos de las intersecciones de las filas + columnas + y 2 d) E?traer los elementos de las intersecciones de las filas , columnas + y 2 Solución: :: ;rand(2)H,4 ; ,.,+ 3.32 6.41 0.47 2.27 6.+2 6.12 2.8, 2.36 +.1+ 0.13 1.48 4.,8 +.3+ 2.67 1.+0 a%:: (#, 7$'+) ans ; 3.32 +.1+
Ing. Héctor G. Bolaños Sosa
estos deben y 7< y de la
y 7< y de las y 7< y de las
,.,+
3.32
6.41
0.47
2.27
6.+2
6.12
2.8,
2.36
+.1+
0.13
1.48
4.,8
+.3+
2.67
1.+0
Vectores y Matrices
+%:: (#, 7$'&) ans ; ,.,+ 0.47 2.36 1.48
1'
3.32
6.41
+.1+
0.13
c%:: (#+ 7$'#+ 2$) ans ; 6.+2 2.8, +.1+ 1.48
d%:: (#, 7$'#+ 2$) ans ; 3.32 0.47 +.1+ 1.48
,.,+
3.32
6.41
0.47
2.27
6.+2
6.12
2.8,
2.36
+.1+
0.13
1.48
4.,8
+.3+
2.67
1.+0
,.,+
3.32
6.41
0.47
2.27
6.+2
6.12
2.8,
2.36
+.1+
0.13
1.48
4.,8
+.3+
2.67
1.+0
,.,+
3.32
6.41
0.47
2.27
6.+2
6.12
2.8,
2.36
+.1+
0.13
1.48
4.,8
+.3+
2.67
1.+0
Eemplo *+.++& Elementos o adyacentes 9enerar una matriz cuadrada de 8?8' usando la funcin rand' desarrollar las siguientes operaciones& a) E?traer las filas ,' 7 y 8 b) E?traer las filas ,' 7 y 8' de la columna + c) E?traer las filas ,' 7 y 8' de las columnas + a la 2 Solución: :: ;rand(8) ; 4.2226 4.,637 4.3,82 4.2486 4.60,0 4.0788 4.0+,1 4.0,30 4.671+ 4.2,47 :: (#, 7 8$'&) ans ; 4.2226 4.,637 4.60,0 4.0788 4.671+ 4.2,47 :: (#, 7 8$'+) ans ; 4.,637 4.0788 4.2,47 :: (#, 7 8$'+&2) ans ; 4.,637 4.1073 4.0788 4.78+0 4.2,47 4.4400
Ing. Héctor G. Bolaños Sosa
4.1073 4.4860 4.78+0 4.1,7+ 4.4400
4.,710 4.+4+1 4.,016 4.3471 4.+6++
4.,011 4.4,87 4.6231 4.228, 4.07,1
4.1073 4.78+0 4.4400
4.,710 4.,016 4.+6++
4.,011 4.6231 4.07,1
4.,710 4.,016 4.+6++
Vectores y Matrices
11
&'; Creaci)n de nuevos$as% vectores 0 -atrices a partir de otras$os% e6istentes !e debe teclear los elementos seleccionados (asD como las filas y columnas) Nuevovector"ector$a7e% uevo vector que tiene elementos desde posicin QaR "asta posicin QeR Nuevovector"ector$9a c e:% uevo vector que tiene elementos de posiciones QaR' QcR y QeR
Eemplo *+.+7& 9enerar un vector QviniR de 8 elementos' iniciando en ,4 "asta el 84' con incrementos de ,4. a) partir del vector inicial QviniR' generar otro vector %,' que contenga los elementos desde la posicin 7 la 8 b) partir del vector inicial QviniR' generar otro vector %+' que contenga los elementos de las posiciones ,'7 y 8 !olucin& :: vini;#,4&,4&84$ +%:: %+;vini(#, 7 8$) vini ; %+ ; ,4 +4 74 24 84 ,4 74 84 a% :: %,;vini(7&8) %, ; 74 24 84 Eemplo *+.+2& 9enerar un vector de ,, elementos' luego crear un nuevo vector a partir del tercero' quinto y del sptimo al dcimo elemento :: v;2&7&72 :: u;v(#7'8'6&,4$) v; u; 2 6 (> ,7 (? ,0 && &; & 3( 72 ,4 ,3 ++ +8 +1 7, Nueva -atri2 Matri2$,ilas/ colu-nas% 5ara generar matrices con elementos adyacentes Nueva Matri2 Matri2$9,ilas:/9colu-nas:% 5ara generar matrices con elementos O adyacentes
Eemplo *+.+8& 9enerar una matriz QR de 2?2' usando el comando rand' luego efectuar las siguientes operaciones& a) partir de la matriz inicial QR' generar el vector M, que tenga todos los elementos de la primera fila. b) partir de la matriz inicial QR' generar el vector M+ que tenga todos los elementos de la ultima fila. c) partir de la matriz inicial QR' generar la matriz M7 que tenga todos los elementos de las filas + a la 2. d) partir de la matriz inicial QR' generar la matriz M2 que tenga todos los elementos de las filas + y la 2. e) partir de la matriz inicial QR' generar la matriz M8 que tenga todos los elementos de la interseccin de las filas , y 7' con las columnas , y 2 :: ;rand(2) ; 4.2334 4.+4+3 4.2,13 4.36+, 4.123+ 4.171, 4.8+8+ 4.4,03
4.31,7 4.7608 4.17,1 4.84+1
Ing. Héctor G. Bolaños Sosa
4.6408 4.2+10 4.7423 4.,106
c%:: M7;(+&2'&) M7 ; 4.2,13 4.36+, 4.123+ 4.171, 4.8+8+ 4.4,03
4.7608 4.17,1 4.84+1
4.2+10 4.7423 4.,106
Vectores y Matrices
a%: M,;(,'&) M, ; 4.2334 4.+4+3 +%:: M+;(&'end) M+ ; 4.6408 4.2+10 4.7423 4.,106
12
4.31,7
4.6408
d%:: M2;(#+ 2$'&) M2 ; 4.2,13 4.36+, 4.8+8+ 4.4,03
4.7608 4.84+1
4.2+10 4.,106
e%:: M8;(#, 7$'#, 2$) M8 ; 4.2334 4.6408 4.123+ 4.7423
Eemplo *+.+3& 9enerar una matriz de 7 ? 7' usando el comando rand' a partir de esta matriz crear una matriz G que contenga los elementos de las columnas , y 7 :: ;rand(7) :: G;(&'#,'7$) ; G; 4.1686 4.4,,1 4.+016 4.1686 4.+016 4.6767 4.1070 4.33,2 4.6767 4.33,2 4.,738 4.,00, 4.+122 4.,738 4.+122 Eemplo *+.+6& 9enerar una matriz A de 7 ? 7' usando el comando rand' a partir de esta matriz crear una matriz - que contenga los elementos de las filas , y 7 Solución: :: A;rand(7) :: -;A(#,'7$'&) A; -; 4.230+ 4.81+1 4.7724 4.230+ 4.81+1 4.7724 4.4321 4.2+78 4.27+0 4.0117 4.8,88 4.++80 4.0117 4.8,88 4.++80 ::-;A(#,'7$'&) -; 4.230+ 4.81+1 4.7724 4.0117 4.8,88 4.++80 Eemplo *+.+1& 9enerar una matriz 7 ? 2< luego deberá generar otra matriz G que contenga los elementos de las filas , y 7< asD como las columnas + y 7< los elementos resultantes son intersectados MN ; :: G;MN(#,'7$'#+'7$) 7 ,, 3 8 G; 2 6 ,4 + ,, 3 74 0 4 1 0 4 &'? Adici)n de nuevos ele-entos a varia+les 0a creadas Una variable que ya sido creada se le puede alterar insertando nuevos elementos. &'?'(
Adici)n de ele-entos a un vector Un vector que tiene QnR elementos' se le puede a/adir nuevos elementos. -ebe e?istir una correspondencia entre las posiciones a adicionar y la cantidad de elementos a/adidos
v$a7e%9e( e& e3 e5 e;: diciona 8 elementos desde la posicin QaR "asta a posicin QeR v$9a c:%9e( e3: diciona + elementos en las posiciones a y c Eemplo *+.+0& 5osiciones adyacentes -efinir un vector con 2 elementos' a/adir 7 elementos' desde la posicin 8
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
13
:: v;#,&2$ v; , + 7 2 :: v(8&6);#,4'+4'74$ v; , + 7 2 ,4
!e crea el vector v de 2 elementos. Luego al mismo vector QvR' se le a/ade 7 elementos (,4'+4 y 74)' quedando finalmente un vector de 6 elementos +4
74
Eemplo *+.74& -os o más posiciones consecutivas -efinir un vector de 8 elementos' insertar nuevos elementos en las posiciones + y 7. : a;#,&8$ !e crea el vector a de 8 elementos. a; Luego al mismo vector QaR' se le , + 7 2 8 a/ade + elementos (+4 y 74)' en las :: a(+&7);#+4'74$ posiciones + y 7 a; , +4 74 2 8 Eemplo *+.7,& Aualquier posicin -efinir un vector de 3 elementos' insertar nuevos elementos en las posiciones +' 2 y 3. :: ;#,&3$ !e crea el vector de 3 elementos. ; Luego al mismo vector QR' se le , + 7 2 8 3 a/ade 7 elementos (+7' 74 y 24)' en :: (#+ 2 3$);#+7 74 24$ las posiciones +' 2 y 3 ; , &3 7 3> 8 5> Eemplo *+.7+& Snsertando otro vector Snsertar nuevos elementos a un vector a/adiendo un vector e?istente. Mostrar los valores en forma de vector fila y vector columna :: ;#,&2$ ; , + 7 2 :: G;#8&+&,+$ G; 8 6 0 ,, :: G;#'G$ G ; , + 7 2
&'?'&
8
6
0
,,
:: G;#=
Adici)n de ele-entos a una -atri2 una matriz e?istente se le puede a/adir nuevas filas y columnas. !e debe tener cuidado' ya que el tama/o de las columnas y filas a/adidas debe coincidir con el de matriz original.
Mat$a/+%9n: diciona , elemento QnR' en la posicin a'b Mat$a7c/d7,%9n( n& n3 n5: diciona elementos a adyacentes en filas y columnas Mat$9a d:/9, %9n( n& n3 n5: diciona elementos O adyacentes tanto en las filas como en las columnas
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
1!
Eemplo *+.77& 5osicin adyacente Arear una matriz de + ? +' luego insertar el valor +7 en la posicin (+'7) :: ;#, + 7 2<8 3 6 1$ :: (+'7);#+7$ ; ; , + 7 2 , + 7 2 8 3 6 1 8 3 +7 1 Eemplo *+.72& Un toda una fila Arear una matriz de + ? +' luego insertar nuevos valores a la fila + :: ;#, + 7 2<8 3 6 1$ ; , + 7 2 8 3 6 1
:: (+',&2);#88'33'66'11$ ; , + 7 2 88 33 66 11 :: (+'&);#88'33'66'11$ (tambien)
Eemplo *+.78. -os matrices adyacentes Arear una matriz de 2 ? 2 (usando rand)' luego insertar nuevos valores a las filas + y 7 :: ;rand(2) :: (+&7'&);#,4&,7<+4&+7$ ; ; 4.2+87 4.8,,7 4.6443 4.2184 4.2+87 4.8,,7 4.6443 4.2184 4.8026 4.6632 4.01+6 4.,,23 ,4.4444 ,,.4444 ,+.4444 ,7.4444 4.8386 4.2107 4.1433 4.3320 +4.4444 +,.4444 ++.4444 +7.4444 4.6,38 4.,180 4.6473 4.7382 4.6,38 4.,180 4.6473 4.7382 Eemplo *+.73& -efinir una matriz aleatoria de 2 ? 7' luego insertar valores en las posiciones (,'+) y (+'+) :: G;rand(2'7) G; 4.2838 4.3,82 4.4,18 4.60,0 4.1+,2 4.0+,1 4.2226 4.671+
4.,637 4.2486 4.0788 4.0,30
:: G(,&+'+);#+4'74$ G; 4.2838 +4.4444 4.,637 4.4,18 74.4444 4.2486 4.1+,2 4.0+,1 4.0788 4.2226 4.671+ 4.0,30
Eemplo *+.76& -os matrices O adyacentes Arear una matriz de 2 ? 2 (usando rand)' luego insertar nuevos valores a las filas , y 7 :: A;rand(2) :: A(#, 7$'&);#,4&,7<74&77$ A; A; 4.,244 4.0002 4.8218 4.86,, ,4.4444 ,,.4444 ,+.4444 ,7.4444 4.8331 4.03,3 4.+3,1 4.6440 4.8331 4.03,3 4.+3,1 4.6440 4.1+74 4.4810 4.8067 4.03+7 74.4444 7,.4444 7+.4444 77.4444 4.3670 4.7347 4.4207 4.6848 4.3670 4.7347 4.4207 4.6848 Eemplo *+.71& /adir un vector -efinir una matriz de + ? +< a/adir un vector a/adir un vector de 2 elementos a la tercera fila de :: ;#, + 7 2<8 3 6 1$ :: (7'&);#74&+&73$ ; ; , + 7 2 , + 7 2
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
8
1"
3
6
1
8 74
3 6 1 7+ 72 73
Eemplo *+.70& -efinir una matriz aleatoria de 7 ? 7' luego a/adir un vector de 7 elementos a la cuarta columna :: A;rand(7) :: A(&'2);#,4' +4'74$ A; A; 4.2,47 4.78+0 4.,710 4.2,47 4.78+0 4.,710 ,4.4444 4.1073 4.1,7+ 4.+4+1 4.1073 4.1,7+ 4.+4+1 +4.4444 4.4860 4.4400 4.,016 4.4860 4.4400 4.,016 74.4444 Eemplo *+.24& Tuntar dos matrices -efinir dos matrices aleatorias de 7 ? + y de 7 matrices :: ;rand(7'+) :: G;#'G$ ; G ; 4.31,7 4.84+1 4.31,7 4.84+1 4.7608 4.6408 4.7608 4.6408 4.17,1 4.2+10 4.17,1 4.2+10 :: G;rand(7) G; 4.7423 4.31++ 4.,840 4.,106 4.74+1 4.3060 4.,072 4.82,6 4.7612
? 7' luego untar las dos
4.7423 4.,106 4.,072
4.31++ 4.74+1 4.82,6
4.,840 4.3060 4.7612
&'< Eli-inaci)n de ele-entos Un elemento o rango de elementos' de una variable e?istente puede ser eliminado' asignando el conunto vacDo # $ (corc"etes sin elementos en su interior. Esta operacin puede ser llevada a cabo para vectores o para matrices En el caso de matrices se tiene que eliminar toda la fila o toda la columna "$n% 9 : Elimina el elemento de la posicin QnR "$a7e% 9 : Elimina elementos de las posiciones adyacentes QaR "asta QeR Mat$a/c% 9 : Elimina elementos de matriz de las posiciones en fila a y columna c
Eemplo *+.2,& 9enerar un vector con el comando linspace' de 3 elementos' iniciando en , y terminando en ,4. Luego eliminar el valor de la posicin 2 :: A;linspace(,',4'3) A; ,.4444 +.1444 2.3444 ?'5>>> 1.+444 ,4.4444
:: A(2);# $ A; ,.4444 +.1444 2.3444 1.+444 ,4.4444
Eemplo *+&2+& 9enerar un vector de 8 elementos' eliminar las posiciones + a 2 :: -;#,&8$ :: -(+&2);# $ -; -; , + 7 2 8 , 8 Eemplo *+.27& 9enerar un vector de 8 elementos' eliminar las posiciones , y 7 :: v;#,4&,4&84$ :: v(#, 7$);# $ v; v; (> +4 3> 24 84 +4 24 84
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
1#
Eemplo +.22& 9enerar una matriz de 7 ? 7' luego eliminar la columna + :: M;rand(7) :: M(&'+);# $ M; M; 4.8++3 4.0606 4.1686 4.8++3 4.1686 4.114, 4.+6,2 4.6767 4.114, 4.6767 4.,674 4.+8+7 4.,738 4.,674 4.,738 Eemplo *+.28& 9enerar una matriz de 7 ? 7' luego eliminar las columnas , y 7 :: M;rand(7) :: M(&'#, 7$);# $ M; M; 4.4,,1 4.+016 4.230+ 4.+016 4.1070 4.33,2 4.4321 4.33,2 4.,00, 4.+122 4.0117 4.+122 Eemplo *+.23& 9enerar una matriz aleatoria de 7 ? 8' eliminar las columnas + a la 2 :: ;rand(7'8) :: (&'+&2);# $ ; ; 4.300+ 4.8821 4.6,80 4.+821 4.1420 4.300+ 4.1420 4.6+68 4.,+,4 4.10+1 4.1383 4.0412 4.6+68 4.0412 4.2612 4.2841 4.+67, 4.+7+2 4.+7,0 4.2612 4.+7,0 Eemplo *+.26& 9enerar una matriz aleatoria de 7 ? + ' eliminar las fila + :: E;rand(7'+) E; 4.,670 4.2701 4.,641 4.7244 4.0027 4.7,2+
:: E(+'&);# $ E; 4.,670 4.2701 4.0027 4.7,2+
&' unciones para -anipulaci)n de arra0s %erificar en la ventana yuda de Matlab' siguiendo& %entana yuda' Kunciones por categorDa' matemáticas' arrays y matrices Nabla *+.,& Kunciones MNLG para manipulacin de arrays Kuncin -escripcin Eemplo Lengt"() -evuelve el número de :: ;#,4 +4 74 24$ elementos de ; ,4 +4 74 24 :: lengt"() ans ; !ize() -evuelve un vector fila' :: size() donde m y n representan ans ; el tama/o del array , 2 diag(v) !i v es un vector' este :: v;#,4 +4 74$ comando crea una matriz v ; cuadrada con los ,4 +4 74 elementos de v en la :: diag(v) diagonal ans ; ,4 4 4 4 +4 4 4 4 74 diag() !i es una matriz' este :: ;rand(7'7)H,4 comando crea un vector a ;
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
1$
partir de los elementos de la diagonal de
7.3841 ,.,068 7.07+2 4.71,7 8.0,87 2.8134 :: diag() ans ; 7.3841 4.71,7 +.3228
1.3016 0.72+2 +.3228
&'= Cadenas de caracteres 0 varia+les tipo string Una cadena o QstringR es un QarrayR de caracteres. 5ara crear una cadena slo es necesita teclear los caracteres que la forman entre comillas simples. Aada elemento de la cadena tiene una ubicacin Eemplo *+.21& 9enerar dos cadenas de caracteres a dos variables (a y b) :: a;="ola= :: b;=mi nombre es Pctor= a; b; "ola mi nombre es Pctor Auando a una variable se le asigna una variable' cada carácter le corresponde una posicin en el array. Eemplo *+.20& En el eercicio anterior' e?traer la posicin , de la variable QaR y la posicin 2 de la variable QbR :: a(,) :: b(2) ans ; ans ; " n !e pueden reemplazar elementos de la cadena (deben ser mismo tama/o). Eemplo *+.84& la variable QbR' cambiar el nombre de Pctor por de Matias :: b;=mi nombre es Pctor= :: b(,2&,0);=Matias= b; b; mi nombre es Pctor mi nombre es Matias Las cadenas se pueden almacenar en una matriz' usando la funcin c(ar No-+revaria+le car$4cadena (F/ 4cadena &F/ G'/ 4cadena nF% Eemplo *+.8,& 9enerar una matriz que contenga la siguiente informacin& a) ombre b) Tuan 5erez c) Edad d) +4 a/os ::-ata;c"ar(=ombre&='=Tuan 5erez='=Edad&='=+4 a/os=) -ata ; ombre& Tuan 5erez Edad& +4 a/os
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
1%
!ROBLEMAS ('
Arear un vector cuyo valor inicial sea +44 y su valor final sea ,84' los valores deben decrecer de ,4 en ,4 Solución: )) M*+2'':,1':1"'- M* 2'' 1&' 1%' 1$' 1#' 1"'
&'
-el vector M< almacenar en variables los elementos tercero y quinto y luego efectuar una suma de estos elementos :: M;#+44&>,4&,84$ M; +44 ,04 ,14 ,64 ,34 ,84 :: %7;M(7) %7 ; ,14 :: %8;M(8) %8 ; ,34 :: !;%7%8 !; 724
3'
Mostrar los elementos que están entre la segunda "asta la quinta ubicacin :: A;M(+&8) A; ,04 ,14 ,64 ,34
5'
Aree un vector fila que contenga los elementos& 7+' 2 ' 1,' e +.8' cos (piI7) y ,2.,+ Solución: :: ve,;#7+'2'1,'e?p(+.8)'cos(piI7)',2.,+$ ve, ; 7+.4444 2.4444 1,.4444 ,+.,1+8 4.8444 ,2.,+44
;'
Aree un vector columna que contenga los elementos& 88',2'ln(8,)' 016 y 8sen(+.8) Solución: vec+;#88',2'log(8,)'016'8Hsin(+.8Hpi)$ vec+;#88',2'log(8,)'016'8Hsin(+.8Hpi)$< = res"ape(vec+'8',) vec+ ; ans ; 88.4444 88.4444 ,2.4444 ,2.4444 7.07,1 7.07,1 016.4444 016.4444 8.4444 8.4444
?'
Aree un vector fila en el cual el primer elemento sea , y el último elemento sea 77' con incrementos de + entre cada elemento. Solución: :: vec7;#,&+&77$
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
vec7 ; Aolumns , t"roug" ,3 , 7 8 6 0 ,, Aolumn ,6 77
1&
,7
,8
,6
,0
+,
+7
+8
+6
+0
7,
<'
Aree un vector columna en el cual el primer elemento sea ,8' el incremento sea >8' y donde el último elemento sea >+8 Solución: :: vect2;#,8&>8&>+8$= vect2 ; ,8 ,4 8 4 >8 >,4 >,8 >+4 >+8
'
Aree un vector fila con ,8 elementos con iguales incrementos' en el cual el primer elemento sea 6 y el último 24 Solución: :: vect8;linspace(6'24',8) vect8 ; Aolumns , t"roug" 0 6.4444 0.786, ,,.6,27 ,2.46,2 ,3.2+13 ,1.6186 +,.,2+0 +7.8444 +8.186, Aolumns ,4 t"roug" ,8 +1.+,27 74.86,2 7+.0+13 78.+186 76.32+0 24.4444
='
Aree un vector columna con ,+ elementos igualmente espaciados' en el cual el primer elemento sea >, y el último sea >,8 Solución: :: vect3;linspace(>,'>,8',+) vect3 ; Aolumns , t"roug" 0 >,.4444 >+.+6+6 >7.8288 >2.1,1+ >3.4040 >6.7373 >1.3732 >0.040, >,,.,1,1 Aolumns ,4 t"roug" ,+ >,+.2828 >,7.6+67 >,8.4444
(>'
Aree un vector llamado arimero' que tenga ,3 elementos' siendo el primero el 2' con incremento de 7 y siendo el último elemento 20. 5osteriormente utilice el sDmbolo dos puntos para crear un nuevo vector' llamado aseguno' que tenga oc"o elementos. Los primeros cuatro elementos serán los primeros cuatro elementos del vector arimero' y los cuatro últimos serán los cuatro últimos elementos del vector arimero. Solución: :: aprimero;#2&7&20$ aprimero ; 2 6 ,4 ,7 ,3 ,0 ++ +8 +1 7, 72 76 24 27 23 20 :: asegundo;aprimero(&'#,&2',7&,3$)
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
2'
asegundo ; 2 6 ,4 (('
,7
24
27
23
20
Aree una matriz tal como la que se indica abao' usar notacin de vectores para crear vectores con incrementos constantes' yIo el comando linspace para crear filas
1 B = 72 0
4
7
10
13
16
19
22
66
60
54
48
42
36
30
0.125 0.250
0.375 0.500
0.625 0.750 0.875
25
1.00 24
Solución: :: G;#,&7&+8<6+&>3&+2
(&'
Arear la matriz .
6 A = 12 34
43
2
11
6
34
0
18
7
41
87
9 5
a) Arear un vector fila de 8 elementos llamado va' que contenga los elementos de la segunda fila de G b) Arear un vector fila de 3 elementos llamado vb' que contenga los elementos de la cuarta columna de G c) Arear un vector fila de ,4 elementos llamado vc' que contenga los elementos de la primera y segunda fila de G d) Arear un vector de seis elementos llamado vd que contenga los elementos de la segunda y la quinta columna de G Solución: :: G;#3 27 + ,, 16<,+ 3 72 4 8<72 ,1 6 2, 0$ G; 3 27 + ,, 16 ,+ 3 72 4 8 72 ,1 6 2, 0 a%:: va;G(+'&) va ; ,+ 3 72
4
8
+%:: vb;G(&'2) vb ; ,, 4 2, c%:: vc;#G(,'&)'G(+'&)$ vc ; 3 27 + ,, 16 d%:: bb;#G(&'+)
Ing. Héctor G. Bolaños Sosa
,+
3
72
4
8
Vectores y Matrices
27
3
(3'
21
,1
16
8
0
Arear la siguiente matriz A&
2 C = 3 7
4
6
8
10
6
9
12
15
14
21
28
35
Luego utilice esta matriz para resolver& a) Arear un vector columna de tres elementos llamado ca' que contenga los elementos de la tercera columna de A b) Arear un vector columna de cinco elementos llamado cb' que contenga los elementos de la segunda fila de A c) Arear un vector columna de nueve elementos llamado cc' que contenga los elementos de la primera' tercera y quinta columna de A d) Arear un vector columna de diez elementos llamado cd' que contenga los elementos de la primera' y segunda fila de A Solución: :: A;##+&+&,4$<#7&7&,8$<#6&6&78$$ A; + 2 3 1 ,4 7 3 0 ,+ ,8 6 ,2 +, +1 78 a%:: ca;A(&'7) ca ; 3 0 +,
c%:: cc;#A(&',)
+%:: cb;A(+'&)= cb ; 7 3 0 ,+ ,8 d%:: cd;#A(,'&)'A(+'&)$ cd ; + 2 3 1 ,4 7 3 0 ,+ ,8
Arear la matriz siguiente&
1 2 3 4 5 6 7 2 4 6 8 10 12 14 A = 21 18 15 12 9 6 3 5 10 15 20 25 30 35 a)
Aree una matriz G de 7?2 a partir de la primera' tercera y cuarta fila' y de la primera' tercera' quinta y septima columna b) Arear un vector fila de ,8 elementos llamado QuR' a partir de los elementos de la tercera fila y de la quinta a la se?ta columna de la matriz Solución:
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
22
!e trata se creacin de nuevas matriz y vector a partir de la matriz :: ;#,&6<+&+&,2<+,&>7&7<8&8&78$ ; , + 7 2 8 3 6 + 2 3 1 ,4 ,+ ,2 +, ,1 ,8 ,+ 0 3 7 8 ,4 ,8 +4 +8 74 78 a% !e usará el concepto de creacin de nueva matriz a partir de la matriz /ue0a Matri * Matri+ilas-4+columnas-5 :: G;(#,'7'2$'#,'7'8'6$) G; , 7 8 6 +, ,8 0 7 8 ,8 +8 78 +% !e usará el concepto de untar dos matrices' un vector será la fila 7 y el otro vector será la columna 8 y 3 (a partir de sus pociones ,6 a +2) 6*+Mat14Mat2- :: ;#(7'&)'(,6&+2)$ ; +, ,1 ,8 ,+ 0
3
7
8
,4
0
+8
3
,+
3
74
Utilizando las funciones zeros' ones y eye' crear los siguientes arrays
(;'
0 0 0 0 0 0 0 0
1 0 0 0
0 0 0
1 1 1
0 1 0 0 0 1 1 0 0
1
1 1
Solución:
>> A=zeros(2,4) A= 0 0 0 0 0 0 0 0
>> B=eye(4) B= 1 0 0 0 1 0 0 0 1 0 0 0
0 0 0 1
>> C=ones(3,2) C= 1 1 1 1 1 1
(?'
Usando los comandos ones y zeros' crear una matriz de 2 ? 8' en la cual las primeras filas sean ceros y las dos siguientes sean unos Solución: Arear la Matriz' luego usar las instrucciones de adicin de elementos a una matriz Mata:c4:5*+lelementos- En la cual se a/aden filas 7 y 2 con unos :: ;zeros(+'8) :: (7&2'&);ones(+'8) ; ; 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 , , , , , , , , , ,
(<'
Arear una matriz de 3 ? 3 en la cual las dos filas centrales' unto a las dos columnas centrales sean unos' el resto de elementos deben ser ceros.
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
23
Solución: !e creará una matriz de ceros usar las instrucciones de adicin de elementos a una matriz Mata:c4:5*+lelementos- a) Areacin matriz de ceros c) la matriz que está corregida' a/adir :: ;zeros(3) nuevos valores (unos) a las columnas 7 y ; 2 4 4 4 4 4 4 :: (&'7&2);ones(3'+) 4 4 4 4 4 4 ; 4 4 4 4 4 4 4 4 , , 4 4 4 4 4 4 4 4 4 4 , , 4 4 4 4 4 4 4 4 , , , , , , 4 4 4 4 4 4 , , , , , , b) dicionar unos (nuevos valores) a la 4 4 , , 4 4 matriz en las filas de 7 a 2 4 4 , , 4 4 :: (7&2'&);ones(+'3) ; 4 4 4 4 4 4 4 4 4 4 4 4 , , , , , , , , , , , , 4 4 4 4 4 4 4 4 4 4 4 4 ('
Utilizando las funciones zeros y ones' crear una matriz 7?8' la cual debe tener la siguiente forma final
0 D = 0 0
0
1
1
0
0
1
1
0
0
1
1
0
Solución: !e deberá usar adicionar nuevos valores (matriz de unos de tama/o 7?+ ) a la matriz :: ;zeros(7'8) :: (6&,+);ones(7'+) ;
4 4 4
; 4 4 4
4 4 4
4 4 4
4 4 4
4 4 4
4 4 4
, , ,
, , ,
4 4 4
!e tendrDa otra alternativa' iniciando con una matriz de unos :: G;ones(7'8) :: G(&',&+);zeros(7'+) G; G; 4 4 , , , 4 4 , , , , , , , , 4 4 , , , , , , , , :: G(&'8);zeros(7',) , , , , , G; 4 4 , , 4 4 4 , , 4 4 4 , , 4
Ing. Héctor G. Bolaños Sosa
Vectores y Matrices
(='
2!
Arear una matriz de 8 ? 6 en la cual la primera fila tenga los números , al 6' en la segunda tenga los números del 1 al ,2' la tercera los números del ,8 al +,' asD sucesivamente. partir de esta matriz' crear otra nueva de 7 ? 2 compuesta por las filas + a la 2 y las columnas 7 a la 3 Solución: !e usará el procedimiento creacin de nuevas matrices a parir de otras e?istentes /ue0a matri*ilas4 columnas5 :: ;#,&6<1&,2<,8&+,<++&+1<+0&78$ :: G;(+&2'7&3) ; G; , + 7 2 8 3 6 ,4 ,, ,+ ,7 1 0 ,4 ,, ,+ ,7 ,2 ,6 ,1 ,0 +4 ,8 ,3 ,6 ,1 ,0 +4 +, +2 +8 +3 +6 ++ +7 +2 +8 +3 +6 +1 +0 74 7, 7+ 77 72 78
Ing. Héctor G. Bolaños Sosa