Académique Documents
Professionnel Documents
Culture Documents
Andrs Marzo
Introduccin.
Vectores.
Matrices.
Comandos y Funciones tiles.
Cadenas de Texto.
Scripts y Funciones.
Tipos de Datos.
Graficas 2D.
Estructuras de Control.
Graficas 3D.
Estructuras y Celdas.
GUI y GUIDE.
Data Acquisition.
Nombre
Estudios.
Expectativas del curso
Conocimientos de Matlab, programacin.
Puntos
Prcticas
30%
Examen Terico
20%
Examen Final
50%
Total
100%
Introduccin
Lenguaje de Programacin.
Alto Rendimiento.
Computacin Tcnica.
Computacin, Visualizacin y Programacin.
Problemas y soluciones en notacin Matemtica (de
Matrices).
Matemticas y Computacin.
Desarrollo y Test de algoritmos.
Modelado, Simulacin y Prototipos.
Anlisis de Datos, exploracin y visualizacin.
Grficas de Ingeniera y Cientficas.
Desarrollo de Aplicaciones finales (GUI)
Barra de Menu
Command History
Command Window
clc
Clear
Exist(Name)
Help name
Quit
Who, whos
>>%Esto es un comentario
>>x=2+3 % Suma
X=
5
Comando
Descripcin
ans
eps
i,j
Unidad imaginaria
Inf
Infinito
NaN
pi
El nmero
Evaluar
>> x=2;y=6+x,x=y+7
Smbolo
Operacin
Comando
Potenciacin
Multiplicacin ab
Divisin derecha
Divisin izquierda
Suma a+b
Resta a-b
a^b
ab
a/b=
A*b
a
b
b
a
a/b
b/a
a+b
a-b
Vectores
>>v = [ 1 3, sqrt(5)]
Verifique el resultado en el workspace.
>> length(v)
Verifique el resultado en el workspace.
Ejecute:
>>1:10
Verifique el resultado.
Cual es la funcin del operador :?
De manera general a : b : c produce un vector
con valor inicial a, valor final c e incrementos
de b.
cat(n,A,B,C,)
find(x)
[u v w] = find(A)
length(A)
linspace(a,b,n)
logspace(a,b,n)
max(A)
[x,k] = max(A)
min(A)
[x,k] = min(A)
size(A)
sort(A)
sum(A)
Matrices
>>A(1:4,4)
Verifique el resultado.
Ejecute:
>>A(:,4)
Verifique el resultado?
Cual es la funcin del operador : manejando
subndices?
A = magic(5)
B = A(end,2:end)
Verifique el resultado.
X = A % Matriz transpuesta
X = inv(A) % Matriz inversa de una matriz
cuadrada
X = pinv(A) % Pseudo inversa
X = chol(A) % Descomposicion Cholesky
d = det(A) % Determinante
[X,D] = eig(A) % Eigenvalores y eigenvectores
[Q,R] = qr(X) % Descomposicin QR
[U,D,V] = svd(A) % Descomposicion a un
simple valor
En Matlab:
>>inversaA=inv(A)
Cmo compruebo?
Comandos y Funciones
tiles
>>conv([1,2],[2,0])
La funcin es:
>>[r,p,k] = residue(b,a)
Descomponga:
En fracciones parciales:
>> b=[1 1 1 2];
>> a=[1 0 3 0 2];
>> [r,p,k]=residue(b,a)
El resultado ser:
En fracciones parciales:
>> b=[1 1 1 2];
>> a=[1 0 3 0 2];
>> [r,p,k]=residue(b,a)
El resultado ser:
Interpolacin
Spline,etc.
Scripts y Funciones
Cuerpo de la Funcin:
function [out1,out2,...] = nombre_fichero
(in1,in2,...)
% Comentarios adicionales para el help
comandos de MATLAB
return;
Tipos de Datos
>>tipo= class(x)
Nos devuelve el tipo de dato de x.
Tambin existen comandos que nos dan
informacin lgica sobre cada tipo:
isinteger(x), isfloat(x), ischar(x), islogical(x),
iscell(x), isstruct(x).
isempty(x), isnan(x), isinf(x).
>>
>>
>>
>>
>>
x = pi*(-1:3), round(x)
fix(x)
floor(x)
ceil(x)
sign(x), rem(x,3)
>> t2 = 'BCDE'
Asigna el valor BCDE al arreglo de caracteres
1x4 t2.
Las cadenas creadas se pueden tomar como
arreglos regulares y manipularlos.
>> t3 = [t1,t2]
Asigne:
>> t4 = [t3,' are the first 5 ';...
'characters in the alphabet.']
Asigna el valor:
'ABCDE are the first 5 '
'characters in the alphabet.'
Asigne:
>> t4 = [t3,' are the first 5 ,...
'characters in the alphabet.']
Asigna el valor:
'ABCDE are the first 5 '
'characters in the alphabet.'
Graficas
1.
2.
3.
4.
5.
6.
7.
6.
7.
Otra forma:
x=[0:0.1:52];
y=0.4.*sqrt(1.8*x);
plot(x,y);
xlabel('Distancia (Km)'),ylabel('Altura(Km)'),...
title('Altura del cohete en funcin de su
distancia al suelo');
>> x = 0:pi/100:2*pi;
>> y = sin(x);
>> plot(x,y)
>> y = sin(3*pi*x);
>> plot(x,y)
Verifique el grfico e identifique que el
numero N es muy pequeo aun.
Cambie N=100 y verifique el resultado
z=0.1+0.9i;
n=[0:0.01:10];
plot(z.^n),xlabel('Real'),ylabel('Imaginario')
igual a plot(real(y),imag(y))
Sintaxis:
>>fplot(string,[xmin xmax])
string: Describe la funcin a ser graficada.
[xmin xmax] : Valores mnimo y mximo de la
variable independiente.
f='cos(tan(x))-tan(sin(x))';
fplot(f, [1 2])
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend('seno(x)','seno(x-.25)','seno(x-.5)')
Ejercicio:
Realizar el ejemplo anterior usando comando hold.
Realice:
Sintaxis:
Subplot(m,n,p)
Este comando divide la ventana en un arreglo
rectangular de m filas y n columnas.
La variable p le dice a Matlab donde va a colocar la
respectiva figura del comando plot.
Ejemplo:
set(handle,'PropertyName','Value',...) cambia
propiedades.
Para personalizar el eje x sin dependencia del
vector:
set(gca,'Xtick',[1 2 3 4 5 6]);
set(gca,'XtickLabel',['ene';'feb';'mar';'abr';'may'
;'jun']);
>>x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8];
>>hist(x)
>>figure
>>bar(x)
Interprete los resultados.
Ejemplo:
x = [0.1, 0.4, 0.5, 0.7, 0.7, 0.9];
y = [0.61, 0.92, 0.99, 1.52, 1.47, 2.03];
c = polyfit(x,y,1)
c1 = x(1):0.1:x(length(x))
c2 = polyval(c,c1)
plot(c1,c2);hold on
plot(x,y,'x')
axis([0,1,0,2.1])
xlabel('x')
ylabel('y)
Temperatura (F)
145
620
130
2266
105
3482
90
Graficas 3D
>> mesh(z)
>> contour(z,10)
>> surf(z)
Se puede cambiar la vista desde la ventana de
comandos:
>> view(0,0)
>> view(90,0)
Definiendo el dominio:
x = 2:0.5:4; y = 1:0.5:3;
Definido el dominio debemos definir la
grilla de valores que servirn de los puntos
(x,y) para graficar.
Esto es como relacionar x y y.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
[X,Y] = meshgrid(-2:.1:2,-2:.2:2);
f = -X.*Y.*exp(-2*(X.^2+Y.^2));
figure (1)
mesh(X,Y,f), xlabel('x'), ylabel('y'), grid
figure (2), contour(X,Y,f)
xlabel('x'), ylabel('y'), grid, hold on
x=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10;
y=x;
[X,Y]=meshgrid(x,y);
Z=cos(X)+cos(Y);
subplot(3,1,1)
surf(Z);
axis([0 11 0 11 0 2])
subplot(3,1,2)
surf(x,y,Z);
subplot(3,1,3)
surf(X,Y,Z);
Operadores Lgicos.
Realizar funciones cuyas acciones dependan del
resultado de otras operaciones.
Repetir clculos un nmero especifico de veces o
hasta que una condicin se satisfaga.
Operador Relacional
Significado
<
Menor que
<=
Menor o igual a
>
Mayor que
>=
Mayor o igual a
==
Igual a
~=
No igual a
Operador
Nombre
Definicin
NOT
~A retorna 1s cuando
sea 0 y 0s cuando sea
1
&
AND
A&B: retorna 1s
cuando A y B no son
cero y retorna cero
cuando A y B no son
cero.
OR
Xor(A,B)
Exclusive OR
Xor(A,B) retorna 1
cuando los elementos
de A o B son
diferentes de 0. Caso
contrario retorna 0.
1.
2.
3.
4.
Parntesis.
Operadores aritmticos y NOT. Evaluados de
izquierda a derecha.
Operadores Relacionales, evaluados de
izquierda a derecha.
Operadores Lgicos, evaluados de izquierda a
derecha.
if expresiones lgicas
Declaraciones
end
Evala una condicin lgica y si dicha expresin evala un
resultado POSITIVO (1) entonces selecciona ejecutar
un grupo de instrucciones, sino evala otro grupo o
sale de la condicin.
if expr1
comandos_matlab
elseif expr2
otro_comandos_matlab
...
else
otros_comandos_matlab
end
t = rand(1)
if t >0.5
disp(valor es mayor que 0.5)
elseif t <0.25
disp(valor es menor que 0.25)
else
disp(valor est entre 0.25 y 0.5)
nd
otherwise
declaracionesn
end
otherwise
declaracionesn
end
Hipermatrices
x(:,:,1)=x1;
x(:,:,2)=x2;
La informacin quedar organizada como se
muestra en la figura:
M=randn(2,3,2)
M(:,:,1) =
-0.4326
-1.6656
M(:,:,2) =
0.1253 -1.1465
0.2877 1.1909
reshape(x, 3, 6);
Interprete los resultados.
Estructuras y Celdas
>> punto.x=2
>> punto.y=3
>> punto.color='rojo
>> punto
Se pueden crear tambin vectores de Estructuras:
>> punto(2).x=4, punto(2).y=5, punto(2).color='verde'
Verifique el direccionamiento:
>> punto(1), punto(2)
Y el direccionamiento de campos:
>> campo = x
>> punto.(campo)
Verifique el direccionamiento:
>> punto(1), punto(2)
Y el direccionamiento de campos:
>> campo = x
>> punto.(campo)
>> b{1}=12;
>> b{2}='Red';
>> b{3}=magic(4);
La diferencia con las estructuras es que se
accede a los valores utilizando un ndice en
lugar del nombre del campo.
Trabajar con estructuras es ineficiente
a{1,1} = 12;
a{1,2} = 'Red';
a{1,3} = magic(4);
a{2,1}=ones(3);
a{2,2}=43;
a{2,3}='texto';
Imagenes
[x,map]=imread('figura.jpg');
image(x)
colormap(map)
a = magic(4);
image(a);
map = hsv(16);
colormap(map)
colorbar
Animacin fly:
t = 0:0.01:10*pi; x = t.*sin(t); y = t.*cos(t);
axislimits = [min(x) max(x) min(y) max(y) min(t)
max(t)];
line_handle = plot3(x(1), y(1),t(1), 'ko', ...
'MarkerFaceColor',[.49 1 .63], 'MarkerSize',12);
set(line_handle, 'erasemode','xor');
axis(axislimits);
grid on
for i = 2:length(x)
set(line_handle, 'xdata',x(i), 'ydata', y(i), 'zdata', t(i));
drawnow;
end
Frame by frame
[x,y] = meshgrid([-10:0.5:10]);
for j = 1:15
z = bessel(0, (j-1)*0.2 + sqrt(x.^2 +y.^2));
surf(x,y,z)
axis([-10 10 -10 10 -.5 1])
M(j) = getframe;
end
frame_order = [1:15 14:-1:1];
number_repeats = 5;
movie(M, [number_repeats frame_order]);
GUI
function PlotButton_Callback(hObject,
eventdata, handles)
x = -10 : 0.1 : 10;
s = get(handles.functionEdit, 'String');
y = eval(s); %eval just evaluates the given string
handles.axes1; %Subsequent commands draw
on axes1.
plot(x, y);