Sei sulla pagina 1di 8

FACULTAD DE INGENIERÍA ELÉCTRICA YELECTRÓNICA

Escuela de Ingenieria Eléctrica


CURSO Métodos numéricos Práctica
ARREGLO DE MATRICES EN
02
TEMA
MATLAB

Profesores Juvenal Tordocillo Puchuc

Objetivos:
En MATLAB, el tipo básico de dato es la matriz, incluso los escalares son considerados como
matrices 1x1, por lo que es importante familiarizarse con esta sección.

2.1 Vectores en MATLAB


Los vectores se introducen escribiendo cada una de sus coordenadas entre corchetes,
separadas por un espacio en blanco:

>> v=[1 3 4 8]

o bien separadas por comas:

>> v=[1, 3,4 ,8]

Escritos mediante punto y coma, obtendremos un vector columna:

>> v=[1, 3,4 ,8]

Para incrementos es posible utilizar según sigue:

Función Salida
[a:h:b] Es un vector según (a, a+h,a+2h…….,a+nh), donde h es el incremento en
el intervalo (a, b).

linspace(a,b,n) Vector de n componentes con partición en el intervalo (a,b)

linspace (a,b) Vector de 100 componentes con partición en el intervalo (a,b)

>> b=[1:0.2:2]
>> b=linspace(1,2,5)
>> b=linspace(1,2)
2.2 Matrices en MATLAB
Para construir una matriz, se deben tener en cuenta las siguientes reglas:
• Los elementos se introducen entre corchetes.
• Los elementos de una misma fila se introducen como un vector fila, separados por comas o
por espacios en blanco.
• Para separar filas se utiliza el punto y coma o el cambio de línea:

> X = [5 7 9 2 9; 3 1 7 5 1; 3 9 2 7 5; 1 5 5 1 8]

X=

5 7 9 2 9
3 1 7 5 1
3 9 2 7 5
1 5 5 1 8

Una vez definida una matriz o un vector, se puede acceder a sus elementos o submatrices con las
órdenes:

Ejemplo 1.

Aquí tenemos las matrices:

 3 4 1 2 3  5 6 
1 2 3      
A=  ; B= 3 6 ;C= 4 5 6 ; D= 7 8
     
 4 5 6 7 8  7 8 9 9 10

>> A=[1 2 3; 4 5 6 ];

>> B=[3 4;3 6; 7 8 ];

>> C=[1 2 3;4 5 6; 7 8 9 ];

>> D=[5 6;7 8;9 10];


>> pause
>> nd = [ ndims(A), ndims(B) ]

>> E=[C D]

>> diag (A) % crea un vector columna a partir de la diagonal de la matriz A


>> size (A) % devuelve las dimensiones de la matriz como un vector fila
>> length (A) % devuelve la mayor de las dos dimensiones de la matriz
>> trace (A) % traza de la matriz
>> rank (A) % rango de la matriz
>> rref (A) % reducción mediante Gauss
>> l = tril (A) % convierte en ceros todos los elementos que quedan encima de la diagonal principal
>> u = triu (A) % convierte en ceros todos los elementos que quedan debajo de la diagonal principal
>> [m n]=max(A) % Guarda en m el vector max(A) y en n un vector cuyos elementos son las filas de A que
contienen los elementos de m.

>> [m n]=min(A) % Guarda en m el vector min(A) y en n un vector cuyos elementos son las filas de A que
contienen los elementos de m.
>> dot(A,A) % producto escalar

>> cross(A,A) % producto escalar

OPERACIÓN DE MATRIZ

Para multiplicar matrices A y B son multiplicaciones compatibles, por ejemplo si A es 𝑛𝑥𝑚 y B es de 𝑚𝑥𝑙
entonces se cumple el producto es 𝑛𝑥𝑙.

(𝐴 ∗ 𝐵)𝑖,𝑗 = ∑𝑚
𝑘=1 𝐴𝑖𝑘 𝐵𝑘𝑗 , 1 ≤ 𝑖 ≤ 𝑛 , 1 ≤ 𝑗 ≤ 𝑙

 3 4
1 2 3    3 + 6 + 21 4 + 12 + 24  30 40
A* B =    3 6 =  = 
4 5 6 7 8 12 + 15 + 42 16 + 30 + 48 69 94
 
>> R=A*B

R=

30 40

69 94

 3 4  3 + 16 6 + 20 9 + 24  19 26 33
  1 2 3     
B * A = 3 6   = 3 + 24 6 + 30 9 + 36 = 27 36 45
   
7 8 
4 5 6
7 + 32 14 + 40 21 + 48 39 54 69

>> R=B*A
R=

19 26 33

27 36 45

39 54 69

Aquí muestra un error porque la operación matemática no es posible porque A2,3 * A2,3 y matlab muestra
como error.
2
1 2 3 1 4 9 
A.^ 2 =   = 16 25 36
 4 5 6  

>> R=A.^2

R=

1 4 9

16 25 36

Para la transpuesta es necesario aplicar ‘

' 1 4
1 2 3
A' =   =2 5
 4 5 6 3 6

>> R=A'

R=

1 4

2 5

3 6

Definición de matrices por bloques

Dadas dos matrices M y N con el mismo número de filas, se puede definir una matriz F formada por
todas las columnas de M y de N:
>>M=rand(3), N=eye(3,2), C=[M N]

Análogamente, se puede definir una matriz a partir de otras dos con el mismo número de columnas:
>>M=randn(2,3), N=ones(3), C=[M ; N]

También puede eliminarse filas y columnas de matrices dadas con las siguientes expresiones.
>>A=eye(5) % matriz identidad 5x5
>> A(3,4)=10, A(2,5)=1
>>B=A
>>B(:,2)=[]

OTRAS OPERACIONES CON MATRICES

(Con A matriz, m y n naturales)


Ejemplos:
>> A = [pi 0; pi/4 pi/3]
>> find (A) % devuelve los índices como un vector columna
>> reshape (A,1,4)
>> rot90 (A) % gira la matriz 90º
>> rot90 (A,3) % gira la matriz 270º ( 90º x 3 = 270º )
>> funm (A,@sin) % calcula el seno de cada elemento de la matriz
>> expm (A)

Ejemplo 1. Constrúyase una matriz A, de orden 5x5, de unos. Cambia todos los unos de la fila tres,
por el número 20.

Solución

Ejemplo 2. Constrúyase una matriz A, de orden 5x7, de números aleatorios entre 0 y 1 y distribución
uniforme. Cámbiese la última fila por un vector cuyas coordenadas sean los puntos de una
distribución uniforme del intervalo [5, 7].

Solución

Para grabar las matrices y vectores temporales del espacio de trabajo.


>> save matriz.dat A
>> save matriz.txt
>> save matriz A
Obs:. Considérese que las operaciones de matrices también se definen otras operaciones a las que
llamaremos operaciones elemento a elemento.

Ejemplo 2.5.1 (Sistema compatible determinado con matriz cuadrada) Dado el sistema

2.3 Solución de Sistemas lineales en MATLAB

Ejemplo 1. Sea la expresión:

Hallar la solución.
clc
clear all
A1=[1 2 3; 1 3 8; 5 6 4];
b1=[6;19;5];
r= rank(A1);
ra=rank([A1 b1]);
x=A1\b1;

disp('el resultado de la matriz es \'),x


pause
disp ('Otra forma utilizando la funcion rref')
E=rref([A1 b1])
disp('el resultado de la matriz es \'),E
Ejemplo 2: Dada las matrices X e Y, que corresponden a trechos de imágenes 3x3 de 256 tonos de ceniza,
sumarlas e informar:

(a) El resultado intermediario (sin considerar el underflow y el overflow).

(b) El resultado final utilizando la normalización.

(c) El resultado final utilizando truncamiento.

200 100 100 100 220 230


X =  0 10 50  , Y =  45
 95 120 
 50 250 120 205 100 0 

El código del programa es como sigue: ejercicio1.m

clc

clear all

close all

X=[200 100 100; 0 10 50; 50 250 120];

Y=[100 220 230; 45 95 120; 205 100 0];

f=X+Y

disp('Presione una tecla el minimo y maximo ...');pause

fmn=min(f);

fmin=round(min(fmn)) %encuentra el el valor minimo del vector

fmx=max(f);

fmax=round(max(fmx)) %encuentra el el valor maximo del vector

disp('Presione una tecla para la normalizacion...');pause

g=255*(f-fmin)/(fmax-fmin)

disp('Presione una tecla redondear...');pause

round(g)

disp('Presione una tecla hacer 255 a todos mayores que 255...');pause

f(find(f>255))=255
EJERCICIOS

1. Sea la expresión:

Hallar la solución

2. Sea la expresión (sistema compatible indeterminado homogéneo):

Hallar la solución

3. Dada las matrices X e Y, que corresponden a trechos de imágenes 4x4 de 256 tonos de ceniza, sumarlas e
informar:

(a) El resultado intermediario (sin considerar el underflow y el overflow).

(b) El resultado final utilizando la normalización.

(c) El resultado final utilizando truncamiento.

 50 0 23 47 50 100 230 49 


200 255 47 46 20 255 47 60 
X =  , Y = 
200 59 45 48 50 90 45 80 
   
226 251 45 2  26 21 5 200

Potrebbero piacerti anche