You are on page 1of 23

INTRODUCCIN

>>help

>>help nombre directorio

>>help nombre de funcin

>>helpwin

>>clc

>>home

Comandos de los sistemas operativos

cd Cambia el directorio de trabajo


pwd Muestra el directorio de trabajo actual
dir o ls Listan el contenido de un directorio
delete Borra un fichero
type Lista el contenido de un fichero
copyfile Copia un fichero o un directorio
mkdir Crea un directorio
rmdir Borra un directorio

>>quit
>>exit

EXPRESIONES ARITMTICAS Y VARIABLES

Ejecucin de sentencias: Pulsar la tecla intro o return

Representacin de nmeros reales:


3 -99 0.0001
9.6397238 96397238E-7 96397238e-7

Representacin de nmeros complejos:


3i 3+4*i 3+4*j 2*i 3e5i

MATLAB trabaja con 16 dgitos significativos.

Rango de nmeros admitidos: aproximadamente de 10-308 hasta 10308.

- realmin, realmax, eps.

1
Operadores aritmticos:
+ suma
- resta
* producto
/ divisin por la derecha
\ divisin por la izquierda
^ potenciacin
2
La fraccin , puede ser introducida en MATLAB como 2/3 o bien como 3\2.
3

Asignacin de nombres variables a valores o expresiones numricas:


>> variable=expresin

ans: Variable que se crea automticamente cuando se omite el nombre de la variable y el


signo =.

; Su utilizacin al final de una sentencia hace que el resultado no aparezca en pantalla,


quedando en memoria la asignacin efectuada.

seguidos de un return: Indica continuacin de la sentencia en la lnea siguiente.

Nombres de variables: Deben empezar con una letra, seguido de una serie de caracteres
alfanumricos hasta un mximo de 31. Se distingue entre maysculas y minsculas.

Constantes internas

pi=3.14159
i o j= 1
Inf o inf=

Tipos de formato

>>format long permite mostrar aproximadamente 16 dgitos significativos


>>format short e emplea notacin cientfica con 5 dgitos significativos
>>format long e emplea notacin cientfica con 16 dgitos significativos
>>format short g emplea notacin cientfica o decimal con 5 dgitos
significativos, dependiendo del valor
>>format long g emplea notacin cientfica o decimal con 15 dgitos
significativos, dependiendo del valor
>>format rat aproxima cualquier valor por el nmero racional ms
prximo
>>format bank representa los nmeros con 2 cifras decimales
>>format hex representa los nmeros en notacin hexadecimal
>>format loose introduce lneas en blanco en las salidas (opcin por defecto)
>>format compact elimina las lneas en blanco anteriores

2
MATRICES

Introduccin de matrices
* Se escriben entre corchetes todos los elementos de la matriz.
* Se utilizar ; o return para indicar el final de una fila.
* Los elementos de una misma fila se separarn con blancos o comas.

size: proporciona las dimensiones de una matriz.

length: proporciona el nmero de elementos de un vector.

Operaciones con matrices

Traspuesta de una matriz:


>> B = A;

Suma y diferencia de matrices:


>>C = A + B;
>>C = A - B;
>>C = A -1;

Multiplicacin de matrices:
>>C = A * B;

Producto escalar de vectores: dot

Producto vectorial de vectores de tres componentes: cross

Funciones de matrices

Matriz inversa:
>>inv(A);

Determinante de una matriz:


>>det(A);

Rango de una matriz:


>>rank(A);

Matriz identidad: eye(n)

Matriz de ceros: zeros(m,n)

Matriz de unos: ones(m,n)

Nmero de condicin:
>>cond(A);

3
Traza de una matriz:
>>trace(A);

Polinomio caracterstico:
>>poly(A);

Valores y vectores propios:


>>e = eig(A);
>>[V,D] = eig(A);

Potencias de matrices: A^p

Exponencial, logaritmo y raz cuadrada de una matriz:


>>expm(A);
>>logm(A);
>>sqrtm(A);

Descomposicin LU y resolucin de sistemas:


>>[L,U] = lu(A);
>>[L,U,P] = lu(A);

Resolucin de un sistema Ax=b:


>>x = A\b;

Factorizacin de Cholesky:
>>R = chol(A);
>>[R,p] = chol(A);

Operaciones elemento a elemento (array operations)

Poner un punto (.) delante del operador que indica la operacin:


>>x = [1 2 3];
>>y = [4 5 6];
>>z = x.*y
z=
4 10 18
>>z = x.\y
z=
4.0000 2.5000 2.000
>>z = x.^y
z=
1 32 709
>>z = x.^2
z=
1 4 9
>>z = 2.^x
z=
2 4 8

4
Manipulacin de elementos de matrices

>> x = [-1.3 sqrt(3) (1+2+3)*4/5]


x=
-1.3000 1.7321 4.8000

( ) permiten referenciar elementos:


>>x(5) = 4
x=
-1.3000 1.7321 4.8000 0 4.0000

>>x(3)=20
x=
-1.3000 1.7321 20 0 4.0000

: permiten extraer submatrices. As si M=[1 3 5 6;3 5 0 -3;-4 0 9 3]


>>M(2,:);
da como resultado la segunda fila de la matriz M, mientras que
>>M(:,2);
da como resultado la segunda columna de la matriz M y
>>M(1:2,1:3)
ans=
1 3 5
3 5 0
>> M(2,2:end-1);

[ ] permiten extraer o intercambiar filas o columnas alternas. As:


>>M([1 3],[2 4])
ans=
3 6
0 3
>>M([2 3],:) = M([3 2], :);

Aadir filas a matrices ya existentes y creacin de matrices por bloques. As:


>>r = [11 22 33 44];
>>M = [M;r]
M=
1 3 5 6
3 5 0 -3
-4 0 9 3
11 22 33 44

>>C=[2.3 4.9;0.9 3.1];


>>D=[C ones(size( C)); eye(size( C)) zeros(size( C))]
D=
2.3 4.9 1 1
0.9 3.1 1 1

5
1 0 0 0
0 1 0 0

diag permite crear matrices diagonales o extraer diagonales de una matriz. As:
diag(v,k) con v vector y k entero crea una matriz con los elementos de v en la k-
sima diagonal.
diag(X,k) con X matriz crea un vector columna con los elementos de la k-sima
diagonal de X.

tril y triu extraen partes triangulares inferiores y superiores de una matriz


respectivamente.

: permiten tambin generar vectores fila. As:


>>x=-3:2:3
x=
-3 -1 1 3
>>x=0:pi/4:pi
x=
0.0 0.7854 1.5708 2.3562 3.1416
>>y=6:-1:1
y=
6 5 4 3 2 1
>>z=[1:3 4:2:8 10:0.5:11]
z=
1 2 3 4 6 8 10 10.5 11

La sentencia linspace crea vectores uniformemente espaciados:


- linspace(x1,x2)
- linspace(x1,x2,N)

Mnimo y mximo:
>>v = [11 23 73 25 49 92 28 23];
>>min(v)
ans=
11
>>max(v)
ans=
92
>>max(A);
dara como resultado un vector fila que contiene el mximo elemento de cada columna.
Para obtener el mximo elemento de toda la matriz A, ser necesario escribir
>>max(max(A));

Suma de elementos de matrices o vectores: sum


Producto de elementos de matrices o vectores: prod
Suma acumulada de elementos de matrices o vectores: cumsum
Producto acumulado de elementos de matrices o vectores: cumprod

6
Ordenacin de elementos: sort (orden creciente).

Aspectos importantes a tener en cuenta

Eliminacin de variables
>>clear A x
>>clear all

Sentencias who y whos

Compatibilidad de dimensiones

Matrices dispersas

S = sparse(i,j,s,m,n,nzmax)
Ejemplo
>>n=5;
>>D = sparse(1:n,1:n,-2*ones(1,n),n,n,n)
D=
(1,1) -2
(2,2) -2
(3,3) -2
(4,4) -2
(5,5) -2
>>E = sparse(2:n,1:n-1,ones(1,n-1),n,n,n-1);
>>S = E + D + E
S=
(1,1) -2
(2,1) 1
(1,2) 1
(2,2) -2
(3,2) 1
(2,3) 1
(3,3) -2
(4,3) 1
(3,4) 1
(4,4) -2
(5,4) 1
(4,5) 1
(5,5) -2

>>D = sparse(1:n,1:n,-2,n,n,n);
>>E = sparse(2:n,1:n-1,1,n,n,n-1);

Transformacin de tipo: sparse(X) y full(X)

spdiags permite crear matrices dispersas con estructura de banda o extraer diagonales de
matrices dispersas

7
A=spdiags(B,d,m,n)
Ejemplo
>>B=[1 -2 5;1 -2 1;1 -2 1;1 -2 1;5 -2 1];
>>A=spdiags(B,-1:1,5,5)
A=
(1,1) -2
(2,1) 1
(1,2) 1
(2,2) -2
(3,2) 1
(2,3) 1
(3,3) -2
(4,3) 1
(3,4) 1
(4,4) -2
(5,4) 1
(4,5) 1
(5,5) -2

B=spdiags(A,d)
Ejemplo
>>B=spdiags(A,-1:1)
B=
1 -2 0
1 -2 1
1 -2 1
1 -2 1
0 -2 1

[B,d]=spdiags(A) extrae diagonales de A con algn elemento distinto de cero.

speye(n): matriz identidad dispersa


spy(A): permite visualizar A

FUNCIONES ELEMENTALES

Operan elemento a elemento.

Funciones trigonomtricas
sin seno
cos coseno
tan tangente
asin arcoseno
acos arcocoseno
atan arcotangente
sinh seno hiperblico
cosh coseno hiperblico

8
tanh tangente hiperblica
asinh arcoseno hiperblico
acosh arcocoseno hiperblico
atanh arcotangente hiperblica

Si se aade una d al final del nombre de todas estas funciones trigonomtricas (por
ejemplo, sind, tand, atanhd,...) operan con argumentos en grados.

Funciones elementales
abs valor absoluto o mdulo de un nmero complejo
realsqrt raz cuadrada de un nmero real positivo
sqrt raz cuadrada
exp exponencial de base e
log logaritmo neperiano. Proporciona resultados
complejos cuando el argumento es negativo
log10 logaritmo en base 10
log2 logaritmo en base 2
reallog logaritmo neperiano
pow2 potencias de base 2
realpow(X,Y) calcula X^Y elemento a elemento
real parte real de un nmero complejo
imag parte imaginaria de un nmero complejo
conj conjugado de un nmero complejo
angle argumento en radianes de un nmero complejo entre
- y
round redondeo al entero ms prximo
fix redondeo hacia cero
floor redondeo hacia -
ceil redondeo hacia
rem resto de una divisin
sign funcin signo

CICLOS Y SENTENCIAS LGICAS

Sentencia Utilizacin
for para establecer un ciclo
while en ciclos apareciendo condiciones
if para establecer condiciones
elseif, else en conjunto con el comando if
switch tambin para establecer condiciones
case, otherwise en conjunto con el comando switch
end para finalizar ciclos
continue para pasar a la siguiente iteracin antes de
tiempo en los ciclos for y while
break interrumpe la ejecucin de un ciclo

9
Ciclo for

>>for contador=valores
sentencias
end

valores: forma n:m n:i:m


Ciclos anidados

Ejemplo: Se van a calcular las hipotenusas de tringulos rectngulos cuyos catetos son
nmeros naturales comprendidos entre uno y cinco.

>>p=zeros(5,5);
>>for k=1:5
for j=1:5
p(k,j)=k^2+j^2;
end
end

Inicializacin previa de matrices mediante tres posibilidades:


i) clear p
ii) p=zeros(m,n)
iii) p=[]

Ciclos while

>>while condicin
sentencias
end

condicin: forma e1e2 con e1 y e2 expresiones aritmticas; operador relacional

Operadores relacionales

== igualdad
<= menor o igual que
>= mayor o igual que
< menor que
> mayor que
= distinto a

>> A=[2 3 4;3 4 5;8 9 7];


>> B=[1 3 2;3 8 5;8 5 7];
>> A==B
ans =
0 1 0
1 0 1

10
1 0 1

Operadores lgicos

& operador y (todas las condiciones deben cumplirse)


operador negacin
| operador o (basta que se cumpla una condicin)

>> A = [0 1 1 0 1];
>> B = [1 1 0 0 1];
>> A&B
ans =
0 1 0 0 1
>> A|B
ans =
1 1 1 0 1
>> ~A
ans =
1 0 0 1 0

Ejemplo
>>n=1000;
>>var=[];
>>while n>0
n=n/2-1;
var=[var,n];
end
>>var
var=
Columns 1 through 7
499.0000 248.5000 123.2500 50.6250 29.3125 13.6562 5.8281
Columns 8 through 9
1.9141 -0.0430

Ciclos infinitos con while 1. Se finalizan con break.

Mayor velocidad operando con vectores que con ciclos

Sentencia continue

- Transfiere el control a la siguiente iteracin de un ciclo for o while, saltndose la


ejecucin de las sentencias situadas entre ella y el end del ciclo.

Sentencia break

- Se utiliza para salirse de los ciclos for y while.

Sentencias if, elseif,else

11
if condicin 1
sentencias
elseif condicin 2
sentencias
elseif condicin 3
sentencias

else
sentencias
end

Sentencias switch, case, otherwise

switch expresin
case expresin1
sentencias1
case expresin2
sentencias2

otherwise
sentencias
end

Funciones relacionales y lgicas

find: encuentra ndices de elementos distintos de cero.


any(x) retorna 1 si alguno de los elementos de x es distinto de cero y 0 en caso
contrario.
all(x) retorna 1 si todos los elementos de x son distintos de cero y 0 en caso contrario.
isinf(x) retorna un 1 por cada elementos de x que sea + - y 0 para el resto.
isempty(x) retorna un 1 si x es una matriz vaca y 0 en caso contrario.

M-FILES: FICHEROS SCRIPTS Y FUNCIONES

Secuencias de sentencias almacenadas en archivos de tipo texto.


Extensin .m.
Nombre: Reglas vistas en variables. No emplear nombres de funciones internas.
Compilacin automtica en primera ejecucin.

Ficheros Script

Ejecucin: Basta teclear su nombre sin la extensin desde el prompt de MATLAB,


posicionndose previamente en el directorio en el que se encuentra el fichero.
Comentarios: Deben estar precedidos por % .

12
Bloques de comentarios:
%{ lnea en blanco
lneas de comentario
%}
Todas las variables definidas quedan en memoria.
Cancelar ejecucin: Ctrl-C.
Impresin de los comandos que van siendo ejecutados: echo (on y off)
Ejecucin de parte seleccionada en el editor: F9

Ejemplo
tic
t=0:0.001:10;
y=sin(t);
toc
tic
i=0;
for t1=0:0.001:10
i=i+1;
z(i)=sin(t1);
end
toc

Funciones

Archivo de extensin .m conteniendo la palabra function al principio de la primera


lnea.

function [argumentos de salida]=nombre(argumentos de entrada)

Los argumentos de entrada se especificarn entre parntesis y separados por comas. Los
argumentos de salida se especificarn entre corchetes y separados por comas.
Las variables definidas dentro de la funcin slo estn en memoria mientras dura la
ejecucin de la misma.
Las nicas variables que permanecen en memoria son los argumentos de entrada y
salida.
La sentencia global var1 var2 permite compartir variables entre funciones.

Ejemplo

function y=media(x)
% Esta funcin calcula la media de los valores contenidos en el vector x
% Argumento de entrada: x
% Argumento de salida : y (contendr la media)

n=length(x);
y=sum(x)/n; % La funcin sum calcula la suma de todas las componentes de x.

13
Este fichero deber guardarse con el nombre media.m.
Para ejecutar esta funcin, se escribir media(nombre del vector) o bien
variable= media(nombre del vector).
Cancelar ejecucin: Ctrl-C.
Las variables nargin y nargout contienen el nmero de argumentos de entrada y salida,
respectivamente de una funcin.
help nombredefuncin devuelve todas las lneas de comentario que han sido
introducidas despus de la lnea de definicin y hasta la primera lnea en blanco o la
primera sentencia ejecutable (esto no es aplicable a los bloques de comentarios).
Para imprimir las sentencias de un archivo de tipo funcin a medida que sta es
ejecutada, debe escribirse en la ventana de comandos
echo nombrefuncion on
echo nombrefuncion off
Tambin se puede evaluar la funcin anterior mediante y=feval(media,x)
return devuelve el control al fichero de llamada o a la ventana principal.

Subfunciones

Funciones que se escribirn una a continuacin de otra dentro de un mismo archivo.


La primera funcin, cuyo nombre coincide con el nombre de dicho archivo, recibe el
nombre de funcin principal.
Las funciones adicionales son las subfunciones, que son solamente accesibles desde la
funcin principal.
Cada subfuncin debe comenzar con su propia lnea de definicin.

Ejemplo

function y = nuevamedia(x) % Funcin principal


% Esta funcin calcula la media de los elementos de un vector x
% utilizando una subfuncin

n = length(x);
y = media1(x,n);

function a = media1(v,n) % Subfuncin


% Calcula la media.
a = sum(v)/n;

Identificadores de funciones

Permiten referencias eficientes a funciones.


Pueden pasarse como argumentos de entrada a otras funciones.
Para construirlos se emplea el smbolo @.

Ejemplos

>>iden1=@sin;

14
>>x=0:0.01:pi;
>>y=iden1(x);
>>plot(x,y)

>>fzero(iden1,7)

>>y=feval(iden1,8);

Funciones annimas

Manera rpida de crear funciones sencillas sin crear archivos .

fhandle=@(lista de argumentos) expresin

fhandle(arg1,arg2,,argn)

Ejemplos

>> raizxy=@(x,y) sqrt(x.^2+y.^2)


raizxy =
@(x,y)sqrt(x.^2+y.^2)

>>raizxy(5,7)
ans =
8.6023

>>exponen=@(x) exp(-x.^2);
>>quad(exponen,0,1)
ans=
0.7468

GRFICOS

Grficos en dos dimensiones

plot(x,y) crea un grfico de y como funcin de x (x contendr la discretizacin


efectuada para la variable independiente).
loglog(x,y) crea un grfico utilizando escalas logartmicas en ambos ejes.
semilogx(x,y) crea un grfico utilizando escala logartmica slo en el eje OX.
semilogy(x,y) crea un grfico utilizando escala logartmica slo en el eje OY.
polar(theta,rho) crea un grfico en polares de =().

Formato de argumentos de entrada

(x1,y1,tipo de lnea y/o tipo de punto y/o color 1, x2,y2,tipo de lnea y/o tipo de
punto y/o color 2,)

15
Tipo de lnea Smbolo Tipo de punto Smbolo Color Smbolo
continua - punto . amarillo y
discontinua -- signo ms + rojo r
a puntos : estrella * verde g
raya punto -. crculo o azul b
aspa x blanco w
cuadrado s negro k
rombo d magenta m
etc. cian c

title(ttulo) aade el ttulo elegido en la parte superior del grfico.


xlabel(etiqueta para eje OX) aade la etiqueta elegida al eje OX.
ylabel(etiqueta para eje OY) aade la etiqueta elegida al eje OY.
legend('etiqueta1','etiqueta2',...) aade un cuadro de texto que identifica los distintos
grficos de una misma figura.
grid aade un mallado al grfico.
text(x,y,texto) aade texto entrecomillado en posicin (x,y).
gtext(texto) coloca texto entrecomillado en la posicin sealada
con el ratn.
[X,Y]=ginput retorna coordenadas marcadas con el ratn hasta que
se presione return
axis([xmin, xmax, ymin, ymax]) establece lmites de ejes.
axis square crea un marco de dibujo cuadrado.
axis image efecta mismo escalado en los ejes OX y OY.
axis normal recupera el marco por defecto.
axis off elimina los ejes.
axis on recupera los ejes.
figure abre una nueva figura.
figure(n) abre una nueva figura con el nmero n.
subplot(m,n,p) divide la figura en mxn partes y selecciona la parte p.
hold on los grficos siguientes se aaden a la figura actual.
hold off desactiva la situacin anterior.

Ejemplo

Fichero script para dibujar las funciones:


f(x)=e-0.5 x sen(5x) y g(x)=e-0.5 x cos(5x)
en el intervalo [-4,4] en una misma figura.

Caso 1
Se crean dos funciones fun1.m y fun2.m, que contienen a f y g respectivamente:

function y=fun1(x)
y=exp(-0.5*x).*sin(5*x);

function y=fun2(x)

16
y=exp(-0.5*x).*cos(5*x);

x=-4:0.05:4; % se crea la discretizacin del intervalo [-4,4]


plot(x,fun1(x),'--r');
title('Ejemplo de grficos');
xlabel('eje OX');
ylabel('eje OY');
hold on
plot(x,fun2(x),'+b');
legend('exp(-0.5x)*sen(5x)','exp(-0.5x)*cos(5x)')
grid;
hold off

Caso 2
x=-4:0.05:4; % se crea la discretizacin del intervalo [-4,4]
y=exp(-0.5*x).*sin(5*x) % se evala f(x) en las componentes del vector x
z=exp(-0.5*x).*cos(5*x) % se evala g(x) en las componentes del vector x
plot(x,y,'--r',x,z,+b);
legend('exp(-0.5x)*sen(5x)','exp(-0.5x)*cos(5x)')
title('Ejemplo de grficos');
xlabel('eje OX');
ylabel('eje OY');
grid;

Grficos en tres dimensiones

plot3(X,Y,Z) crea un grfico de curvas contenidas en la superficie z=z(x,y).


contour(X,Y,Z,n) dibuja n curvas de nivel de la funcin z=z(x,y) en el plano z=0.
contour3(X,Y,Z,n) dibuja n curvas de nivel de la funcin z=z(x,y) con su corres -
pondiente altura z.
mesh(X,Y,Z) realiza un mallado de la superficie z=z(x,y) basado en la discreti -
zacin de las variables independientes.
surf(X,Y,Z) dibuja la superficie z=z(x,y) incluyendo el mallado.
pcolor(X,Y,Z) equivalente a surf con punto de vista perpendicular al dibujo.
meshc , surfc combinan mesh o surf con contour.

Argumentos X e Y son matrices creadas a partir de dos vectores x e y mediante:


[X,Y]=meshgrid(x,y)
Filas de X = copias del vector x . Nmero de filas de X = length(y).
Columnas de Y = copias del vector y. Nmero de columnas de Y = length(x).
Argumento Z es una matriz de la misma dimensin que X e Y . Contiene los valores de
la funcin z=z(x,y) en los puntos (xi,j,yi,j) con xi,j X e yi,j Y.
Si x, y, z son vectores la sentencia plot3 dibuja una curva en el espacio cuyas
ecuaciones paramtricas han sido discretizadas dando lugar a los puntos (xi,yi,zi).
Si slo se conocen valores de la funcin z en los puntos de un mallado rectangular en el
plano OXY, puede escribirse

17
mesh(x,y,Z) surf(x,y,Z) mesh(Z) surf(Z)

En los dos ltimos casos MATLAB considera x=1:n e y=1:m, siendo [m,n]=size(Z).
Mapas de colores: Son matrices de 3 columnas con valores entre 0 y 1 que representan
la intensidad de los tres colores fundamentales RGB. Existen mapas predefinidos (ver
graph3d) de 64 filas o colores. Con la sentencia colormap(nombre mapa) se cambian
los colores de la figura. La sentencia colorbar visualiza la escala de valores.
view: establece el punto de vista.
rotate3d: gira mediante ratn cualquier grfico en 3D.

Desde el men File (opcin Save As) se puede guardar la figura como un fichero con
extensin .fig que se podr abrir desde la opcin Open del men File de la ventana
principal de MATLAB.

MISCELNEA

Almacenamiento de variables

save nombre var1 var2iden1 iden2 guarda en el fichero de datos nombre.mat las
variables var1, var2 etc. y los identificadores de funciones iden1, iden2 etc..
load nombre var1 var2 iden1 iden2 recupera las variables e identificadores
almacenados en nombre.mat.
diary nombre graba todo lo que se est haciendo en una sesin de trabajo en el fichero
nombre.
diary off desactiva la situacin anterior.
diary on permite volver a grabar en el fichero nombre.

Funciones de entrada y salida

input permite introducir datos desde el teclado durante cualquier


ejecucin.
disp permite escribir datos o texto en pantalla.
pause y pause(n) detiene la ejecucin de un fichero hasta que el usuario pulse
cualquier tecla.
fprintf permite escribir datos con formato especificado. Algunos formatos son:
\n salto de lnea
\t aade tabulador
%s para variables carcter
%d para variables enteras
%f para variables reales
%e para variables reales con notacin cientfica
- Para escribir el carcter \ deber teclearse \\ y para escribir el carcter % deber
teclearse %%.

18
Ejemplo
>>temp=25.5;
>>fprintf(\tLa temperatura es \n%4.2f grados\n,temp)
La temperatura es
25.50 grados
>>
Introduccin de grandes cantidades de datos en ficheros script.

Otros tipos de datos

1. Variables de texto

>>s=Hola
s=
Hola
>>size(s)
ans=
1 4
>>s=[s, a todos]
s=
Hola a todos

num2str, str2num permiten convertir variables numricas en variables de texto y


viceversa.

Ejemplo
>> figure
>> T=20;
>>title([ La Temperatura es num2str(T),grados]);

eval(f) permite evaluar funciones matemticas definidas como variables de texto.

Ejemplos
>>f=1/(i+j-1);
>>for i=1:20
for j=1:20
a(i,j)=eval(f);
end
end

>> g='x.^2';
>> x=0:0.02:1;
>> eval(g)

>>x='0:0.1:1';
>>eval(x)

19
2. Matrices tridimensionales

>> A(:,:,1)=[1 2 3;4 5 6]


A=
1 2 3
4 5 6
>>A(:,:,2)=[7 8 9;10 11 12]
A(:,:,1) =
1 2 3
4 5 6
A(:,:,2) =
7 8 9
10 11 12

>>sin(A)
ans(:,:,1) =
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
ans(:,:,2) =
0.6570 0.9894 0.4121
-0.5440 -1.0000 -0.5366

3. Matrices de celdas

Introduccin de matrices celdas


* Se escriben entre llaves todos los elementos de la matriz.
* Se utilizar ; o return para indicar el final de una fila.
* Los elementos de una misma fila se separarn con blancos o comas.

Ejemplo

>> b={[2 2;3 3],3,'hola';[4 3],['hola';'sola'],[4;3]}


b=
[2x2 double] [ 3] 'hola'
[1x2 double] [2x4 char] [2x1 double]

>> b{2,1}
ans =
4 3

Funciones que permiten trabajar con matrices celda

cell(m,n) crea una matriz celda vaca de dimensin mxn.


celldisp(nombre) muestra el contenido de todas las celdas de la matriz celda
nombre.
cellplot(nombre) muestra una representacin grfica de las distintas celdas de
la matriz celda nombre.
nombre={} crea una matriz celda vaca.

20
num2cell transforma una matriz numrica en matriz celda.

Consideraciones finales

Directorios de inters

- polyfun: Manipulacin de polinomios, interpolacin polinomial,


polyval(a,x)
polyder(a)
polyint(a,k)
roots(a)
conv(a,b)
[q,r]=deconv(n,d)

Integracin numrica : quad, quadl, dblquad, triplequad,...



- funfun Re solucin numrica de E.D.O.: ode23, ode45,...
Optimizacin y obtencin de races : fzero, fmin,...

1. Funciones con un nmero variable de argumentos

varargin: matriz de celdas que contiene todos los argumentos de entrada opcionales de
la funcin.
varargin debe ser el ltimo argumento de entrada de la funcin y debe escribirse en
minsculas.
En la llamada a la funcin, varargin recoger todos los argumentos de entrada que se
introduzcan a partir de ese punto.

Ejemplo

function midibujo(x,varargin)
plot(x,varargin{:})

>> x=0:0.01:pi;
>> midibujo(x,sin(x),'r:')

varargout: matriz de celdas que contiene todos los argumentos de salida opcionales de
la funcin.
varargout debe ser el ltimo argumento de salida de la funcin y debe escribirse en
minsculas.
En la llamada a la funcin, varargout recoger todos los argumentos de salida a los que
se haya dado valores dentro de la funcin.

Ejemplo

function varargout=ejemplo(varargin)

21
if nargin==1
entero=round(varargin{1});
varargout{1}=entero;
elseif nargin==2
entero=round(varargin{1});
resto=rem(varargin{1},varargin{2});
varargout{1}=entero;
varargout{2}=resto;
end

>> x=9.8765;y=3.4567;
>> a=ejemplo(x)
a=
10

>> [a,b]=ejemplo(x,y)
a=
10
b=
2.9631

2. Consideraciones adicionales sobre identificadores de funciones

Su uso permite acceder a todas las subfunciones de un archivo desde fuera.

Ejemplo

function identfun=misfunciones
identfun={@funcion1 @funcion2 @funcion3 @funcion4};

function f=funcion1(x)
f=exp(-0.5*x).*sin(5*x);

function f=funcion2(x)
f=exp(-0.5*x).*cos(5*x);

function f=funcion3(x);
f=exp(-0.5*x).*sin(3*x);

function f=funcion4(x)
f=exp(-0.5*x).*cos(3*x);

% Guardamos en identfun los handles correspondientes a las funciones a


% representar
identfun=misfunciones;

x=0:0.01:pi;

22
y=[]; % Se inicializan las matrices a utilizar en el ciclo for
f={};

for i=1:4
y(i,:)=feval(identfun{i},x); % Se evala la funcin a representar

% La sentencia func2str convierte los handles anteriores en variable carcter


% que se guardarn en una matriz de celdas. Esta matriz se usar posteriormente
% para etiquetar el grfico usando la sentencia legend

f{i}=func2str(identfun{i});
end

plot(x,y(1,:),x,y(2,:),x,y(3,:),x,y(4,:))
legend(f{1},f{2},f{3},f{4});

23

You might also like