Professional Documents
Culture Documents
Tabla de contenidos
Qu es MATLAB?
1. Caractersticas bsicas
1.1 El espacio de trabajo de Matlab
1.2 Matemtica sencilla
Ejemplos
1.3 Almacenar y recuperar datos
1.4 Formato de visualizacin de nmeros
1. Caractersticas bsicas
1.1 El espacio de trabajo de Matlab
Una vez iniciado MATLAB aparecer una pantalla como la que se muestra a continuacin:
Todas las sentencias que vamos a utilizar las escribiremos en la ventana Command
Window (ventana de comandos). Es la ventana de mayor tamao.
Si queremos informacin acerca de las variables que estamos utilizando en MATLAB podemos
verlas en la ventana Workspace (espacio de trabajo) o usar:
who para obtener la lista de las variables (no de sus valores)
whos para obtener la lista de las variables e informacin del tamao, tipo y atributos
(tampoco da valores)
Para ver esta ventana tenemos que pinchar en la pestaa que tiene este nombre. Est en la parte
superior izquierda:
Si lo que se pretende es conocer el valor que tiene una variable lo que hacemos es escribir el
nombre de la variable y pulsar Intro.
Para recordar rdenes previas usamos las flechas del teclado y . Tambin podemos verlas en la
ventana Command History, ventana situada en la parte inferior izquierda:
Operacin
Smbolo
Expresin en Matlab
Suma
a+b
Resta
a-b
Multiplicacin
a*b
Divisin
a/b
Potencia
a^b
Ejemplos
> >a=7 % Damos valor a la variable y la escribe por pantalla
a=
7
> >b=4 ; % En este caso, no escribe el valor de b ya que hemos puesto un (;) al fina
> >a+b % realiza la suma de las dos variables y guarda la solucin en la variable ans
ans=
11
En MATLAB :
Tipo
Resultado
format
short
3.1416
format long
3.14159265358979
format
short e
3.1416e+000
format long
e
format
short g
3.1416
format long
g
3.14159265358979
format
short eng
3.1416e+000
format long
eng
3.141592653589793e+00
format
bank
3.14
format hex
Hexadecimal
400921fb54442d18
format rat
Aproximacin racional
355/113
format +
3.141592653589793e+00
0
2. Ayuda en lnea
MATLAB proporciona asistencia de varios modos.
Si queremos consultar un comando determinado podemos buscar informacin escribiendo en la
ventana de comandos help <comando a consultar>, o simplemente help. Tambin podemos
abrir la ventana de ayuda con el ratn o con la tecla F1. Una vez abierta esta ventana podemos
buscar por contenidos, palabras concretas, demostraciones
Por ltimo con la orden lookfor <palabra>, busca en todas las primeras lneas de las ayudas de
los temas de MATLAB y devuelve aquellos que contienen la palabra clave que hemos escrito. No
es necesario que la palabra clave sea una orden de MATLAB.
Qu hace?
Ejemplo x=5.92
ceil (x)
fix (x)
floor (x)
round (x)
(Con x escalar, vector o matriz, pero redondeara en cada caso los elementos individualmente)
3.2 Trigonometra
Funci
n
Qu hace?
(x)
sin (x)
seno (radianes)
cos (x)
Coseno
tan (x)
Tangente
csc (x)
Cosecante
sec (x)
Secante
cot (x)
Cotangente
d (x)
sind (x)
seno (grados)
h (x)
sinh (x)
seno hiperblico
a (x)
asin (x)
a d
(x)
asind
(x)
ah
asinh
(x)
Qu hace?
abs (x)
sign (x)
exp (x)
Exponencial
gcd (m,n)
lcm (m,n)
log (x)
log2 (x)
log10(x)
mod (x,y)
rem (x,y)
sqrt (x)
Raz cuadrada
nthroot (x,n)
4.Vectores y Matrices.
Para crear un vector introducimos los valores deseados separados por espacios (o comas) todo
ello entre corchetes []. Si lo que queremos es crear una matriz lo hacemos de forma anloga pero
separando las filas con puntos y comas (;).
Ejemplos:
> > x = [1 2 3 4 5] es un vector, los elementos los separamos con espacios
x=
12345
> > y = [2,1,3,7] otro vector con los elementos separados con comas
y=
2137
> > A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnas
A=
123
456
nos da todos los elementos desde el m-simo hasta el n-simo del vector x.
> > x (2:4) % devuelve desde el segundo al cuarto elemento del vector x
ans =
7 -2 4
Para acceder a los elementos de una matriz necesitamos dar dos valores, el primero indica la fila y
el segundo la columna.
> > A = [1 2 3; 4 5 6];
> > A (2,1) % elemento de la matriz que est en la fila 2 y en la columna 1
ans =
4
Si queremos que escriba toda una fila usaremos los dos puntos para indicar que queremos todos
los elementos.
> > A (2,:) % escribe la segunda fila de la matriz
ans =
456
Y similar si queremos que escriba toda una columna pero ahora situamos los dos puntos en el
lugar de las filas para indicar que queremos todas las filas de esa columna.
> > A (:,2) % escribe la segunda columna de la matriz
ans =
2
5
Al igual que con los vectores podemos indicar que escriba una serie de filas o columnas, la manera
de hacerlo sera muy parecido.
> > A (2,2:3) % escribe de la segunda fila de la matriz, las columnas de la 2 a la 3
ans =
56
> > A (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1
ans =
64
Nombre
vector
Descripcin
(a:b)
(a:c:b)
de c en c.
linspace
(a,b,c)
linspace (a,b)
logspace
(a,b,c)
logspace
(a,b)
Nombre
matriz
Descripcin
zeros (n)
zeros (m,n)
ones (n)
ones (m,n)
rand (n)
rand (m,n)
randn (n)
randn (m,n)
eye (n)
eye (m,n)
Expresin
A+B
Suma de matrices
AB
Resta de matrices
A*B
Multiplicacin de matrices
.*
A .* B
A/B
./
A ./ B
A\B
.\
A .\ B
A^n
.^
A .^ B
'
A'
.'
A .'
Ejemplos:
Definimos tres matrices para poder hacer operaciones entre ellas.
A=B=C=
5. Texto
La potencia de MATLAB proviene de su capacidad para manipular nmeros, pero en ocasiones es
deseable manipular texto, como suceda cuando colocamos etiquetas o ttulos en las grficas. En
MATLAB las cadenas de caracteres, o simplemente cadenas, son simplemente texto
entrecomillado y se manejan como vectores filas
Columns 13 through 24
99 97 100 101 110 97 32 100 101 32 99 97
Columns 25 through 32
114 97 99 116 101 114 101 115
abs(prueba)
ans =
Columns 1 through 12
69 115 116 111 32 101 115 32 117 110 97 32
Columns 13 through 24
99 97 100 101 110 97 32 100 101 32 99 97
Columns 25 through 32
114 97 99 116 101 114 101 115
%Un array numrico se puede convertir en su cadena equivalente
%usando la orden setstr
setstr(2*prueba)
ans =
@@@@@
Las funciones que operan con matrices de ms de dos dimensiones son anlogas a las funciones
vistas previamente, aunque con algunas diferencias. Por ejemplo, las siguientes sentencias
generan, en dos pasos, una matriz de 232:
AA(:,:,1)= [1 2 3; 4 5 6] % matriz inicial
AA =
1 2 3
4 5 6
AA(:,:,2)= [2 3 4; 5 6 7] % se aade una segunda matriz
AA(:,:,1) =
1 2 3
4 5 6
AA(:,:,2) =
2 3 4
5 6 7
La funcin cat() permite concatenar matrices segn las distintas dimensiones, como puede verse
en el siguiente ejemplo:
A=zeros (2, 3); B=ones (2, 3);
cat(1,A,B)
ans =
0 0 0
0 0 0
111
11 1
cat (2, A, B)
ans =
000
111
000
111
cat (3, A, B)
ans (:,:,1) =
0 0 0
0 0 0
ans (:,:,2) =
1 1
1 1 1
Todas las funciones de MATLAB que operan sobre escalares ( sin (), cos (), etc.) se aplican
sobre hipermatrices elemento a elemento (igual que sobre vectores y matrices). Las operaciones
con escalares tambin se aplican de la misma manera.
Las funciones que operan sobre vectores ( sum(), max(), etc.) se aplican a matrices
e hipermatrices segn la primera dimensin, resultando un array de una dimensin inferior.
Las funciones matriciales propias del lgebra Lineal ( det(),inv(), etc.) no se pueden aplicar a
hipermatrices. Para poderlas aplicar hay que extraer primero las matrices correspondientes (por
ejemplo, con el operador dos puntos (:)).
7. Estructuras
Una estructura (struct) es una agrupacin de datos de tipo diferente bajo un mismo nombre. Estos
datos se llaman miembros (members) o campos (fields). Una estructura es un nuevo tipo de dato,
del que luego se pueden crear muchas variables (objetos o instances). Por ejemplo, la estructura
alumno puede contener los campos nombre (una cadena de caracteres) y carnet(un nmero).
MATLAB permite aadir un nuevo campo a una estructura en cualquier momento. La siguiente
sentencia aade el campo edad a todos los elementos del vector alum, aunque slo se da valor al
campo del elemento 5,
alum(5).edad=18;
Para ver el campo edad en los 10 elementos del vector puede teclearse el comando:
alum.edad
cell(m,n)
celldisp(ca)
cellplot(ca)
celdasiscell(ca)
indica si ca es un vector de
celdasnum2cell()
cell2struct()
struct2cell()
ST =
vector: [1 2 3]
cadena: 'mi nombre'
matriz: [3x3 double]
vbb = struct2cell(ST)' % hay que transponer para obtener una fila
vbb =[1x3 double] 'mi nombre' [3x3 double]
La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una gran
flexibilidad para el almacenamiento de los ms diversos tipos de informacin. El inconveniente es
que se pierde parte de la eficiencia que MATLAB tiene trabajando con vectores y matrices.
significado
Smbolo
Menor que
<
Menor o igual
<=
Mayor que
>
Mayor o igual
>=
Igual a
==
Distinto a
~=
Podemos usar estos operadores para comparar arrays del mismo tamao o comparar un array con
un escalar (entonces se compara cada elemento del array con el escalar) . La salida de las
operaciones lgicas se puede utilizar tambin en operaciones matemticas.
Smbolo
AND
&
OR
NOT
EXCLUSIVE OR
xor
any
all
exist
isnan
sinf
isfinit
e
Existe un orden de precedencia para operadores aritmticos, lgicos y relacionales, los siguientes
operadores estn ordenados de mayor a menor precedencia:
1. list item ^ .^ ' .'
2. * / \ .* ./ .\
3. + - ~ +(unario) -(unario)
4. : > < >= <= == ~=
5. | &
10. Grficos
Matlab posee una serie de comandos para crear interfaces grficas de manera muy sencilla.
Cdigo
Escala de colores
jet
HSV
hot
spring
summer
autumn
winter
cool
Existen an ms cdigos de colores, los que faltan son: gray, bone,copper, pink y lines.
Ahora probemos algn cdigo de los anteriores, usaremos Winter. (Seguimos usando la figura que
obtuvimos con el comando surfc, tambin los cdigos se escriben en minsculas, jet, hot etc,
exepto HSV que va con maysculas).
> >colormap(winter)
11.3 Sentencia IF
Una parte importante de cualquier lenguaje de programacin son las sentencias condicionales. La
sentencia ms comn en Matlab es if, la cual tiene varias formas de uso. La forma ms simple de
la sentencia if es:
if (expresin lgica) sentencia
Lo anterior tiene que ser escrito en una sola lnea.
El flujo de ejecucin es de arriba hacia abajo. Las expresiones condicionales son evaluadas en
secuencia hasta que se encuentra una que es verdadera. Entonces el cdigo asociado es
ejecutado y el control salta a la siguiente sentencia despus de la sentencia endif.
Sentencias if anidadas: La sentencia if puede ser anidada varios niveles. Se debe evitar anidar
muchos niveles de sentencias if ya que es difcil de seguir.
El nombre de la funcin y el nombre del archivo deben ser idnticos y no empezar por cifra sino por
letra
Como ejemplo de funciones propias de MATLAB editemos el archivo fliplr.m
function y = fliplr(x)
% FLIPLR Flip matrix in left/right direction.
% FLIPLR(X) returns X with row preserved and columns flipped
% in the left/right direction.
%
% X = 1 2 3 becomes 3 2 1
%456654
if ndims(x)~=2, error('X must be a 2-D matrix.'); end
[m,n] = size(x);
y = x(:,n:-1:1);
Funcin Estadstica
Descripcin
corrcoef(x)
Coeficientes de correlacin
cov(x)
Matriz de covarianza
cumprod(x)
cumsum(x)
diff(x)
hist(x)
mean(x)
median(x)
prod(x)
rand(x)
randn(x)
sort(x)
std(x)
sum(x)
14. Polinomios
Con MATLAB se puede trabajar con polinomios de forma sencilla. Es suficiente tener en cuenta
que un polinomio no es nada ms que un vector, en que el orden de los coeficientes va de mayor a
menor grado.
Ejemplo
p(x) = 8x4 - 5x3 + x2 + 3x + 4
en Matlab debemos ingresar a p de la siguiente manera
p=[8-5134]p=8-5134
Funciones bsicas:
roots(p): Obtiene races de un polinomio dado
Calcula las races de un polinomio cuyos coeficientes son los elementos del vector p.
Si p tiene N+1 componentes, el polinomio es p(1)*X^N + + p(N)*X + p(N+1).
q=[1-56]q=1-56
roots(q) ans = 3 2
ans =
1 36 25 78 113 74 78 106 48
deconv(p,q)
% cociente resultado de dividir p entre q
ans =
0.5000
roots(p)
% Raices del polinomio p
ans =
-1.7793
0.4292 + 1.1502i
0.4292 - 1.1502i
-0.7458
15.2 Minimizacin
Para encontrar mnimos de funciones unidimensional y n-dimensional usamos, respectivamente,
las funciones:
fmin('nombre_funcin',a,b)
fmins('nombre_funcin',a)
Creamos un fichero que va a ser una funcin que a su vez va a llamar a otras dos funciones que
tambin hemos creado nosotros:
Fichero .m:
% trabajo
function trabajo
x = input ('Escribe un nmero: ');
y = input ('Escribe otro nmero: ');
disp ('La suma es')
suma (x,y)
disp ('La resta es')
resta (x,y)
pause %para que no se cierre la ventana automticamente al ejecutarse
Fichero suma.m:
% suma
function m = suma (tt,xx)
m = tt + xx;
Fichero resta.m:
% resta
function m = resta (tt,xx)
m = tt - xx;
Despus de situarnos en el directorio correspondiente escribimos:
mcc -m Trabajo
seleccionarlo en el botn donde pone Abrir. Aparecer una nueva ventana similar a sta:
Pinchamos en el botn Finish y ya tendremos el fichero de datos convertido en una matriz en
Matlab.
Si queremos abrir el fichero solo hay que llamarlo con el nombre con el que lo hemos guardado.
Para exportar una matriz la convertimos en el texto escribiendo lo siguiente:
diary my_data.out
Crea un vector v3 donde sus elementos vayan desde el 2 al 20 y que en total tenga 10 elementos:
v3=linspace(2,20,10)
v3 =
2 4 6 8 10 12 14 16 18 20
Averigua cul es el cuarto elemento del vector v3:
v3(4)
ans =
8
1234
Crea la matriz M= 5 6 7 8
9 10 11 12
M=[1 2 3 4;5 6 7 8;9 10 11 12]
1234
M= 5 6 7 8
9 10 11 12
Calcula la traspuesta de la matriz M:
M'
ans =
159
2 6 10
3 7 11
4 8 12
Halla la fila 2 de la matriz M:
M(2,:)
ans =
5678
Calcula el rango de M:
rank(M)
ans =
2
Calcula la traza de la matriz M:
trace(M)
ans =
19
Crea la matriz identidad de tamao 4:
eye(4)
ans =
1000
0100
0010
0001
Crea la matriz nula de tamao 3x3:
zeros(3)
ans =
000
000
000
Crea la matriz cuadrada de unos de tamao 2x2:
ones(2)
ans =
11
11
Averigua las dimensiones de la matriz M:
size(M)
ans =
34
Crea una matriz llamada M2 que tenga por diagonal el vector v y el resto sean todo ceros:
M2=diag(v)
M2 =
1000
0200
0030
0004
Haz que aparezca por pantalla la matriz triangular inferior a partir de M:
tril(M)
ans =
1000
5600
9 10 11 0
Haz que aparezca por pantalla la matriz triangular superior a partir de M:
triu(M)
ans =
1234
0678
0 0 11 12
Calcula una matriz que tenga por elementos todos los elementos de la matriz M elevados al
cuadrado:
M.^2
ans =
1 4 9 16
25 36 49 64
81 100 121 144
Elimina de la matriz M su tercera columna:
M(:,3)=[]
M=
124
568
9 10 12
Calcula el determinante de M:
det(M)
ans =
0
Guarda en p el polinomio x3 - x2 - 26x - 24:
p=[1 -1 -26 -24];
Calcula las races del polinomio p:
roots(p)
ans =
6.0000
-4.0000
-1.0000
Evala el polinomio p cuando x = 1:
polyval(p,1)
ans =
-50
Evala el polinomio p en todos los valores del vector w:
polyval(p,w)
ans =
-54 0 88 216
Crea un polinomio q que tenga por races los elementos del vector v:
q=poly(v)
q=
1 -10 35 -50 24
Calcula la multiplicacin de los polinomios p y q:
conv(p,q)
ans =
1 -11 19 151 -596 436 576 -576
x=(-10:8); y=x.^2;
Ahora dibuja la grfica formada por esos dos vectores:
plot(x,y)
Guarda en la variable a la palabra guacamole:
a='guacamole';
Haz que aparezca en pantalla la representacin ASCII del valor almacenado en la variable a:
abs(a)
ans =
103 117 97 99 97 109 111 108 101
Crea un pequeo programa que escriba por pantalla BUENOS DAS y a continuacin los 15
primeros nmeros pares (usando un for):
disp('BUENOS DAS')
for i=1:15
disp(2*i)
end
Calcula la derivada de la funcin f(x) = sin (2x) + tan (x2):
diff('sin(2*x)+tan(x^2)')
ans =
2*cos(2*x)+2*(1+tan(x^2)^2)*x
abs all angle ans any area asin asind asinh axis
calendar cat ceil cell celldisp cellplot clabel clc clear clock colorbar colormap complex
cond conj continue contour contour3 conv corrcoef cos cot cov cross csc cumprod
cumsum
feval fieldnames fill fill3 find fix fliplr flipud floor fminbnd for format bank format hex format
long format long e format long eng format long g format rat format short format short e
formatshort eng format short g format + fplot function funm fzero
gcd grid
i if imag inf inv invhilb iqr iscell ischar isempty isequal isfield isfinite isfloat isinf isinteger
islogical isnan isnumeric isprime isreal isscalar isspace isstruct
lcm length linspace load log loglog logm logspace log2 log10 lookfor lu