Professional Documents
Culture Documents
0 página 1
PROGRAMACIÓN EN MATLAB
PRÁCTICA 03
INTRODUCCIÓN A MATLAB 7.0
» B= [ -1 0 3; 6 1 16; 9 4 2]
» C=A*B
» A’
» B’
» inv(A)*B
» A\B
» B*inv(A)
» B/A
Nota: inv(A) es una función que realiza el cálculo de la inversa de la matriz A.
A modo de ejercicio se propone el cálculo de la expresión matricial (A-3B+C)·C-1, donde las
matrices A, B y C vienen dadas por:
⎡ −1 1 0 ⎤ ⎡1 −3 2 ⎤ ⎡−2 1 3⎤
A = ⎢ 5 12 13⎥ B = ⎢6 0 3 ⎥ C = ⎢ 7 1 9 ⎥
⎢ ⎥ ⎢ ⎥ ⎢ ⎥
⎢⎣−1 0 4 ⎥⎦ ⎢⎣3 7 13⎥⎦ ⎢⎣ −1 −4 3⎥⎦
MATLAB permite definir una serie de matrices de forma automática sin necesidad de tener
que introducir los elementos uno por uno. Las matrices que se pueden generar de esta
manera cumplen alguna peculiaridad que las distingue del resto. Veamos en este apartado
algunas de las funciones que hacen esto posible.
eye(4) forma la matriz unidad de tamaño (4x4)
zeros(3,5) forma una matriz de ceros de tamaño (3x5)
zeros(4) ídem de tamaño (4x4)
ones(3) forma una matriz de unos de tamaño (3x3)
ones(2,4) ídem de tamaño (2x4)
linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y
x2
logspace(d1,d2,n) genera un vector con n valores espaciados logarítmicamente
entre 10^d1 y 10^d2. Si d2 es pi1, los puntos se generan entre
10^d1 y pi
rand(3) forma una matriz de números aleatorios entre 0 y 1, con
distribución uniforme, de tamaño (3x3)
rand(2,5) ídem de tamaño (2x5)
randn(4) forma una matriz de números aleatorios de tamaño (4x4), con
distribución normal, de valor medio 0 y varianza 1
1
pi es una variable predefinida en MATLAB, que como es fácil suponer representa el número π.
TECNUN
3ª Práctica. Matlab 7.0 página 3
magic(4) crea una matriz (4x4) con los números 1, 2, ... n*n, con la
propiedad de que todas las filas y columnas suman lo mismo
diag(x) forma una matriz diagonal, en la que los elementos de la
diagonal son los elementos del vector x.
Pruebe las siguientes sentencias en MATLAB
» zeros(4)
» B=zeros(2,3)
» ones(1,3)
» ones(3,1)
» A=eye(3)
» eye(2)
» magic(3)
» C=rand(3,6)
» diag([1 2 3])
» x=[ -1 3 1 4], diag(x)
» y=linspace(0, 10, 21)
» z=logspace(1, 6, 6)
» z=logspace(0, 6, 13)
Aparte de las operaciones básicas con matrices, MATLAB es capaz de realizar cálculos de
nivel superior gracias al conjunto de funciones que posee. Aquí se presentan algunas de ellas
que pueden resultar de interés para el alumno.
B = inv(A) calcula la inversa de A
d = det(A) devuelve el determinante d de la matriz cuadrada A.
t = trace(A) devuelve la traza t (suma de los elementos de la diagonal) de una
matriz cuadrada A
[m,n] = size(A) devuelve el número de filas m y de columnas n de una matriz
rectangular A
i = size(A,1) devuelve el número de filas de A
j = size(A,2) devuelve el número de columnas de A
n = size(A) devuelve el tamaño de una matriz cuadrada A
A modo de ejercicio realice el cálculo del determinante y de la inversa de la siguiente matriz
cuadrada A.
⎡1 −2 3 −1 0 ⎤
⎢7 5 −2 1 13 ⎥
⎢ ⎥
A = ⎢4 11 6 −3 0 ⎥
⎢0 2 −4 9 12 ⎥
⎢ ⎥
⎣⎢3 33 1 −5 −6⎥⎦
TECNUN
3ª Práctica. Matlab 7.0 página 5
Para acceder a filas y/o columnas que no sean consecutivas, basta con crear un vector con las
filas y/o columnas a las que se desea acceder. Por ejemplo para extraer las filas 1 y 3 y las
columnas 2, 4 y 5 de una matriz B, se puede utilizar la siguiente secuencia de operaciones:
» B=magic(5)
» fil = [1, 3]
» col = [2, 4, 5]
» A=B(fil,col)
Los vectores se pueden considerar como matrices con una fila o una columna, por lo tanto
el tratamiento de vectores desde el punto de vista matricial es el mismo que el de las
matrices. En ocasiones interesa realizar en un vector o incluso en una matriz operaciones
elemento a elemento. Por ejemplo supongamos que se desea calcular el cuadrado de cada
elemento de un vector.
Dado un vector x
» x=[1 2 4 6 8]
el cuadrado de los elementos de x se obtiene como sigue
» x.^2
mientras que si se intenta ejecutar el comando
» x^2
el programa da un error porque las dimensiones no son acordes según las reglas del producto
de matrices.
Obsérvese que el operador potenciación para el cálculo elemento a elemento es .^.El
conjunto de operadores que realizan cálculos elemento a elemento son:
.* multiplicación
.^ potenciación
a.\b divide los elementos de b por los de a (a y b mismo tamaño)
a./b divide los elementos de a por los de b (a y b mismo tamaño)
Evidentemente la adición y la sustracción no requieren el punto, ya que son por
definición operaciones elemento a elemento.
Obtenga el cubo de los números naturales impares desde 1 hasta 15. Obtén asimismo
una matriz cuyos elementos sean los cuadrados de los elementos de la matriz A=magic(6).
Función save
La función save puede guardar aquellas variables que se encuentren en el Workspace.
Inicialmente vacíe el Workspace utilizando la función clear. Cree una matriz de tipo magic
de dimension 3x3 y asígnele el nombre de matriz_A. Ahora calcule su inversa y guarde el
resultado en otra matriz llamada matriz_B. Posteriormente asigne el resultado del producto
de ambas matrices a una variable llamada matriz_AxB.
Función load
Vacíe nuevamente el Workspace utilizando la función clear. Ahora el Workspace está vacío
y vamos a recuperar los ficheros de datos guardados anteriormente.
Escriba: >>load Matrices.
El resultado es que en el Worskspace reaparecen las variables matriz_A, matriz_B y
matriz_AxB, con sus respectivos contenidos.
Vacíe nuevamente el Workspace utilizando la función clear y escriba:
>>load Matriz_A_y_B
Observará que en el Workspace sólo aparece la variable matriz_A y la variable matriz_B,
pero no la matriz_AxB.
Para mas información escriba:
>>help load
Y también:
>>help save
TECNUN
3ª Práctica. Matlab 7.0 página 7