Professional Documents
Culture Documents
Qu es Matlab?
MATLAB es un lenguaje de alto nivel para realizar clculos cientifico-tcnicos. Integra las herramientas de clculo necesarias con otras de visualizacin as como, un entorno de programacin de fcil uso.
Aplicaciones tpicas
Clculo matemtico Desarrollo de algoritmos Adquisicin de datos Modelado, simulacin y prototipado Anlisis de datos y visualizacin Grficos Desarrollo de aplicaciones e interfaces grficas de usuario (GUI)
Introduccin a Matlab y Simulink Javier Ramrez
Ms sobre MatLab
MatLab significa MATrix LABoratory El tipo bsico de datos es el vector que no requiere ser dimensionado.
El entorno de Matlab
Sintaxis
Entrada
2+3 7-5 34*212 1234/5786 2^5
a = sqrt(2)
a = 1.4142
b = a, pi, 2 + 3i
Se pueden introducir varios comandos en una sola lnea. Pi, i, y j son constantes. "eps" es el limite actual de precisin. No se puede operar con nmeros inferiores a eps. Definicin de vectores. "d", "e", son "f" vectores. Son iguales. El operador : se utiliza para formar vectores; cuenta desde el nmero inicial al final de uno en uno. Otros usos de :. Se utiliza para acceder a parte o la totalidad de los datos de un vector o matriz.
c = sin(pi) eps
d= [1 2 3 4 5 6 7 8 9 d = 1 2 3 4 5 6 7 8 9 ] e=123456789 e = [1:9] f=123456789 f = 1:9 g = 0:2:10 f(3) f(2:7) f(:) g = 0 2 4 6 8 10 ans = 3 ans = 2 3 4 5 6 7 123456789
h = [1 2 3]; h'
(nada) ans = 1 2 3
Un punto y coma ";" evita que se visualice la salida. Una coma simple " ' " calcula la traspuesta de una matriz, o en el caso de vectores, intercambia entre vectores fila y columna. Operaciones con vectores. * es la multiplicacin matricial. Las dimensiones deben ser las apropiadas. " .* " es la multiplicacin componente a componente. Construccin de matrices. Accediendo a los elementos de la matriz. ":" se utiliza para acceder a una fila completa.
Entrada
Salida ans =
Comentarios
g^2
g .^ 2
30 36 42 66 81 96 Multiplica la matriz por ella misma. 102 126 150 ans = 1 4 9 Eleva al cuadrado cada elemento de la 16 25 36 matriz. 49 64 81
Control de la salida
El comando format
format compact
Controla el espaciado de lneas. Muestra los 15 dgitos que se utilizan en el clculo. Muestra nicamente cinco dgitos. No visualizar salida:
format long
format short
help format
Ms informacin.
Introduccin a Matlab y Simulink Javier Ramrez
10
Ms sobre matrices
Entrada
rand(2) rand(2,3) zeros(2) ones(2) eye(2) hilb(3)
Comentarios Genera una matriz de nmeros aleatorios entre 0 y 1 Genera una matriz 2x2 de ceros o unos. Matriz identidad I. Matriz de Hilbert 3x3.
ans = 1 0 0 1 ans = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000
11
Ms sobre matrices
Concatenacin
Sea la matriz a:
>> a = [1 2; 3 4] a = 1 2 3 4
Introduccin a Matlab y Simulink Javier Ramrez
12
13
Ms sobre matrices
Programacin
No se producira salida puesto que la nica lnea que podra generar salida (t(i,j) =i/j;) termina en ; Sin el ;, Matlab escribira la matriz t 100 veces!!
Introduccin a Matlab y Simulink Javier Ramrez
14
+, -, *, y /
Debemos distinguir:
15
Escalares
Un escalar es un nmero. Matlab los almacena como matrices 1x1 Todas las operaciones entre escalares y matrices se realizan componente a componente salvo:
La potencia (^).
Introduccin a Matlab y Simulink Javier Ramrez
16
Escalares
Ejemplos
Entrada b=2 a + b a * b a ^ b a .^ b Salida b=2 ans = 3 4 5 6 ans = 2 4 6 8 ans = 7 10 15 22 ans = 1 4 9 16
a = 1 3
2 4
Comentarios Define b como un escalar. La suma se hace componente a componente. Igual que la multiplicacin. Potencia matricial - a*a Potencia componente a componente.
17
Vectores
dot(v,u)
cross(v,u)
ans = 10
ans = -4 8 -4
Matrices
Entrada
k = [16 2 3; 5 11 10; 9 7 6] trace(k) rank(k) det(k)
Comentarios
Define una matriz. Traza de una matriz Rango de una matriz. Determinante de una matriz
19
Matrices
Entrada Salida ans = 0.0294 -0.0662 0.0956 -0.4412 -0.5074 1.0662 0.4706 0.6912 -1.2206 Comentarios Inversa de una matriz Vectores propios y autovalores de una matriz. Las columnas de "vec" contienen los vectores propios; las entradas de la diagonal de "val" son los autovalores.
inv(k)
[vec,val] = eig(k)
vec = -0.4712 -0.4975 -0.0621 -0.6884 0.8282 -0.6379 -0.5514 0.2581 0.7676 val = 22.4319 0 0 0 11.1136 0 0 0 -0.5455
20
Size
Bytes
Class
a b c
800 80000 8
21
Una de las principales aplicaciones de las matrices es la representacin de sistemas de ecuaciones lineales. Si a es una matriz de coeficientes, x es un vector columna que contiene las incgnitas y b los trminos constantes, la ecuacin a x =b
22
Resolviendo ecuaciones
Ejemplo
23
Los datos de la sesin se pierden al salir de MatLab. Para salvar la sesin (entrada y salida)
Diary(session.txt);
Diary <ON/OFF> ;
save datos.mat (guarda todas las variables) save datos.mat x (slo guarda x)
Introduccin a Matlab y Simulink Javier Ramrez
24
save sesion
save fichero X
load sesion
Si los ficheros se pueden salvar en formato texto (ascii). Pueden verse con un editor de textos.
Introduccin a Matlab y Simulink Javier Ramrez
25
Grficos
color (b,g) blue,green Marcador (+,x) title, xlabel, ylabel, legend, grid.
Introduccin a Matlab y Simulink Javier Ramrez
26
Ejemplo
Mes = 1:12; T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0]; T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2]; plot(Mes, T_Gr, 'bo', Mes, T_Ma, 'rv'); xlabel('Mes'); ylabel('Temperatura (C)'); title('Temperaturas minimas en Granada y Madrid'); legend('Granada','Madrid'); grid;
Introduccin a Matlab y Simulink Javier Ramrez
27
Resultado:
28
subplot
Mes = 1:12 T_Gr = [-2 0 2 4 8 12 14 14 12 8 4 0]; T_Ma = [-4 -2 0 2 6 14 18 18 16 8 2 -2]; subplot(2,1,1); plot(Mes, T_Gr, 'bo-'); xlabel('Mes'); ylabel('Temperatura (C)'); title('Temperaturas minimas en Granada'); grid; subplot(2,1,2); plot(Mes, T_Ma, 'rv-'); xlabel('Mes'); ylabel('Temperatura (C)'); title('Temperaturas minimas en Madrid'); grid;
Introduccin a Matlab y Simulink Javier Ramrez
29
Resultado
30
Grficos tridimensionales
31
Grficos tridimensionales
Z = X.*exp(-X.^2-Y.^2); contour3(X,Y,Z,30) surface(X,Y,Z,'EdgeColor',[.8 .8.8],'FaceColor','none') grid off 0.5 0.4 view(-15,25) 0.3 colormap cool
0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 2 1 0 -1 -2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
32
Programacin
Secuencias de comandos. Al invocarlos se ejecutan en el entorno. Las variables creadas son globales.
Ficheros de funcin
Permiten definir funciones propias. Variables locales. La informacin se pasa como parmetros. Se pueden definir subfunciones.
Introduccin a Matlab y Simulink Javier Ramrez
33
Un ejemplo de funcin
function y = media (x) % Valor medio de x. % Para vectores, media(x) devuelve el valor medio. % Para matrices, media(x) es un vector fila % que contiene el valor medio de cada columna. [m,n] = size(x); if m == 1 m = n; end y = sum(x)/m;
34
Argumentos de funciones
nargin y nargout
Ejemplo:
function c = testarg1(a,b) if (nargin == 1) c = a.^2; elseif (nargin == 2) c = a + b; end
Introduccin a Matlab y Simulink Javier Ramrez
35
Subfunciones
function [media,mediana] = estadistica(u) % Funcin principal % ESTADISTICA Calcula la media y la % mediana utilizando funciones internas. n = length(u); media = mean(u,n); mediana = median(u,n); function a = mean(v,n) % Calcula la media. a = sum(v)/n; function m = median(v,n) % Calcula la mediana. w = sort(v); if rem(n,2) == 1 m = w((n+1)/2); else m = (w(n/2)+w(n/2+1))/2; end % Subfuncin
% Subfuncin
36
Bifurcaciones
Condicin 1 false true Bloque 1 true Bloque 2
Condicin true
false
false
Condicin 2
Sentencias
Bloque 2
false Bloque 3
37
if
Sentencia if if condicin sentencias end Bifurcacin multiple if condicin1 bloque1 elseif condicin2 bloque2 elseif condicin3 bloque3 else bloque4 end
38
switch
switch expresion case case1, bloque1 case {case2, case3, ...} bloque2 ... otherwise, switch valor bloque3 case -1 end disp('negativo'); case 0 disp('cero'); case 1 disp('positivo'); otherwise disp('otro'); end
Introduccin a Matlab y Simulink Javier Ramrez
39
Bucles
false
Sentencias
true
40
for
for i = 1:n sentencias end for i = vector sentencias end
41
while
{continue, break}
Sentencia break
Hace que termine la ejecucin
Sentencia continue Hace que se pase inmediatamente a la siguiente iteracin del bucle for o while n = 1; while prod(1:n) < 1e100 n = n + 1; end
42
Toolboxes
Communications Toolbox Filter Design Toolbox Image Processing Toolbox Signal Processing Toolbox Statistics Toolbox System Identification Toolbox Wavelet Toolbox
43
Communications Toolbox
44
Filtrado de seales
y= filter(b,a,x);
45
Respuesta en frecuencia
[H,w] = freqz(b,a,N);
Magnitude (dB)
Calcula N puntos de la respuesta en frecuencia del filtro definido por b y a. Para el filtro:
y(n)= 0.8y(n-1) + x(n)
20 10 0 -10 0 0 -20 -40 -60 0 0.2 0.4 0.6 0.8 Normalized Frequency ( rad/sample) 1 0.2 0.4 0.6 0.8 Normalized Frequency ( rad/sample) 1
freqz(1,[1 -0.8],256);
Phase (degrees)
46
Diseo de filtros
B = FIR1(N,Wn);
B = FIR1(N,Wn,'high');
47
0 -20
-40 -60
% Diseo. % Respuesta.
|H|
-80 0
0.2
% Visualizacion de la respuesta en frecuencia. subplot(2,1,1); plot(W/pi,20*log10(abs(H))); xlabel('w en unidades de \pi'); ylabel('|H|'); legend('N=8','N=16','N=32','N=64'); grid; subplot(2,1,2); plot(W/pi,unwrap(angle(H))); xlabel('w en unidades de \pi'); ylabel('Fase de H (rads)'); legend('N=8','N=16','N=32','N=64'); grid;
Fase de H (rads)
48
49
50
51
52
53
Diezmado e interpolacin
2 1.5 Seal original
Y = DECIMATE(X,R)
1 0.5 0
Ejemplo: Decimacin en un factor 4. t = 0:.00025:1; % Vector de tiempos x = sin(2*pi*30*t) + sin(2*pi*60*t); y = decimate(x,4); stem(x(1:120)); %Original axis([0 120 -2 2]) title('Seal original') figure stem(y(1:30)); %Decimada title('Seal decimada')
-0.5 -1 -1.5 -2 0
20
40
60 Seal decimada
80
100
120
10
15
20
25
30
54
Diezmado e interpolacin
2 1.5 Seal original
Y = INTERP(X,R)
1 0.5 0 -0.5
t = 0:0.001:1; % Time vector x = sin(2*pi*30*t) + sin(2*pi*60*t); y = interp(x,4); stem(x(1:30)); title('Seal original'); figure stem(y(1:120)); title('Seal interpolada');
-1 -1.5 -2 0
10
15
20
25
30
Seal interpolada
20
40
60
80
100
120
55
pwelch Fs = 1000; t = 0:1/Fs:.296; % Una seal coseno de 200 Hz ms ruido x = cos(2*pi*t*200)+randn(size(t)); pwelch(x,[],[],[],Fs,'twosided'); % Ventana por defecto, solapamiento y NFFT.
56
Ejemplos
-10 -15 Periodogram PSD Estimate -16 -18 Welch PSD Estimate
100
200
300
700
800
900
57
58
Ejemplos
-24 Covariance PSD Estimate -24 Modified Covariance PSD Estimate -26 -26
-28
-28
-30
-30
-32
-32
-34
-34
-36
-36
-38 0
-38 0
100
400
500
-24
-24
-26
-26
-28
-28
-30
-30
-32
-32
-34
-34
-36
-36
-38 0
-38 0
100
400
500
59
Predictor lineal:
x ( n)
x(n)
i 1
A(i 1) x(n i)
[A,E] = LPC(X,N)
Calcula:
Minimizando J= E{|e(n)|2}
60
Comunicaciones
Funciones principales:
Generacin de seales aleatorias Anlisis de errores Codificacin de la fuente (escalar, diferencial) Codificacin para el control de errores (convolucional, codificacin lineal de bloques) Modulacin y demodulacin (analgica y digital) Filtrado mediante filtros especiales Aritmtica en cuerpos de Galois
Introduccin a Matlab y Simulink Javier Ramrez
61
62
randint
= = = =
% % % %
63
Modulacin/demodulacin digital
64
Modulacin/demodulacin digital
Mapping+modulacin/demodulacin
dmodce/ddemodce
y y y y y y y y y = = = = = = = = = dmodce(x,Fd,Fs,'method/nomap'...); dmodce(x,Fd,Fs,'ask',M); dmodce(x,Fd,Fs,'fsk',M,tone); dmodce(x,Fd,Fs,'msk'); dmodce(x,Fd,Fs,'psk',M); dmodce(x,Fd,Fs,'qask',M); dmodce(x,Fd,Fs,'qask/arb',inphase,quadr); dmodce(x,Fd,Fs,'qask/cir',numsig,amp,phs); dmodce(x,Fd,[Fs initphase],...);
Slo mapping
modmap/demodmap
modmap('method',...); y = modmap(x,Fd,Fs,'ask',M); y = modmap(x,Fd,Fs,'fsk',M,tone); y = modmap(x,Fd,Fs,'msk'); y = modmap(x,Fd,Fs,'psk',M); y = modmap(x,Fd,Fs,'qask',M); y = modmap(x,Fd,Fs,'qask/arb',inphase,quadr); y = modmap(x,Fd,Fs,'qask/cir',numsig,amp,phs);
65
Ejemplo
M = 16; Fd = 1; Fs = 3; x = randint(100,1,M); % % % % % % Modulacin M-aria. Se muestrea el mensaje original a una muestra por segundo. La seal modulada se muestrea a una frecuencia de 3 muestras por segundo. Mensaje digital aleatorio.
% Modulacin M-ary PSK y = dmodce(x,Fd,Fs,'psk',M); % Adicin de ruido Gaussiano. ynoisy = y + .04*randn(300,1) + .04*j*randn(300,1); % Diagrama de dispersin a partir de las observaciones ruidosas. scatterplot(ynoisy,1,0,'b.'); % Demodulacin para recuperar el mensaje z = ddemodce(ynoisy,Fd,Fs,'psk',M); s = symerr(x,z) % Comprobar la tasa de error de los smbolos.
Introduccin a Matlab y Simulink Javier Ramrez
66
Quadrature
67
Anlisis de errores
biterr
68
Ejemplo
x = randint(100,100,4); % Seal original % Introduccin de errores. % Los errores pueden ser 1, 2, o 3 (no 0). % Colocacin de los errores errorplace = (rand(100,100) > .9); errorvalue = randint(100,100,[1,3]); % Valor error errors = errorplace.*errorvalue; y = rem(x+errors,4); % Seal y error sumadas mod 4 % Anlisis de errores format short [num_bit,ratio_bit] = biterr(x,y,2) [num_sym,ratio_sym] = symerr(x,y)
Introduccin a Matlab y Simulink Javier Ramrez
69
Ejercicio:
Estudiar mediante Matlab/Simulink el efecto del ruido en los sistemas de comunicacin digital.
Diferentes esquemas de modulacin (ASK, PSK, FSK, MSK). Obtener las curvas de error en funcin de la SNR. Adicionalmente, considrese PSK con M= 4 y 8 smbolos y comprese las curvas de error frente a la SNR.
Introduccin a Matlab y Simulink Javier Ramrez
70
Introduccin a Simulink
Simulink es una herramienta para modelado, simulacin y anlisis de sistemas dinmicos. Soporta tanto sistemas lineales como no lineales:
en tiempo continuo, muestreados, hbridos y sistemas multifrecuencia (contienen sistemas muestreados a diferente frecuencia).
Introduccin a Matlab y Simulink Javier Ramrez
71
Entorno de trabajo
72
73
Resultado de la simulacin
1 0.5 0 -0.5 -1 0 1 0.5 0 -0.5 -1 0 0.5 1 1.5 2 2.5 3 x 10
4
500
1000
1500
2000
2500
3000
74
Ejemplo
75
Simulacin
76
77
Estimacin espectral
78
Resultado de la simulacin
79
8-PSK (Gray)
80
Procesado de imgenes
Lectura de imgenes:
A = imread(filename, fmt)
Lee una imagen en escala de grises o en color fmt especifica el formato de imagen (BMP, JPEG, PNG, TIFF, etc)
map
Mapa de color
81
Lectura de imgenes
82
Transformaciones espaciales
B = imrotate(A,angle) B = imrotate(A,angle,method)
method bbox
-> ->
B = imrotate(A,angle,method,bbox)
B= imcrop(A); B= imcrop(A,rect);
Herramienta interactiva
83
Filtrado 2D
B= imfilter(A,h)
Original
Filtrada N= 5
Introduccin a Matlab y Simulink Javier Ramrez
Filtrada N= 20
84
= = = =
freqz2(h, n1, n2) freqz2(h, [n2 n1]) freqz2(h) freqz2(h, f1, f2)
1 0.8
Magnitude
1 0.8
Magnitude
Filtro 55
Fy
Filtro 2020
85
Diseo de filtros 2D
1 0.8 0.6
Magnitude
h = fwind1(Hd,hamming(21)); freqz2(h);
86
100
200
87
88
15000 10000
4000
200 100 0
200 100 0
50
100
150
200
250
50
100
150
200
250
50
100
150
200
250
2000 1000 0
2000 1000 0
50
100
150
200
250
89
90
Ejemplo:
Iris setosa, Iris virginica, Iris versicolor 4 caractersticas de cada ejemplo: Longitud y anchura de los ptalos y spalos
Introduccin a Matlab y Simulink Javier Ramrez
91
Anlisis discriminante:
knn:
= = = =
Group = svmclassify(SVMStruct, Sample) Group = svmclassify(SVMStruct, Sample, 'Showplot,ShowplotValue) SVMStruct = svmtrain(Training, Group) SVMStruct =svmtrain(..., 'Kernel_Function', Kernel_FunctionValue)
92
SW
5.5
6 SL
6.5
7.5
93
Visualizar la clasificacin:
hold on; gscatter(X,Y,C,'rb','.',1,'off'); K = coeff(1,2).const; L = coeff(1,2).linear; Q = coeff(1,2).quadratic; f = sprintf('0 = %g+%g*x+%g*y+%g*x^2+%g*x.*y+%g*y.^2', ... K,L,Q(1,1),Q(1,2)+Q(2,1),Q(2,2)); h2 = ezplot(f,[4.5 8 2 4]); set(h2,'Color','m','LineWidth',2) axis([4.5 8 2 4]) xlabel('Sepal Length') ylabel('Sepal Width') title('{\bf Classification with Fisher Training Data}')
94
2 4.5
5.5
6 SL
6.5
7.5
95
Seleccin de caractersticas
% Seleccin aleatoria de subconjuntos de entrenamiento y test [train, test] = crossvalind('holdOut',Group); cp = classperf(Group); % Entrenamiento de una mquina de vectores de soporte svmStruct = svmtrain(data(train,:),Group(train),'showplot',true); % Aadimos ttulo. title(sprintf('Kernel Function: %s',... func2str(svmStruct.KernelFunction)),... 'interpreter','none'); % Clasificacin del conjunto de test classes = svmclassify(svmStruct,data(test,:),'showplot',true); % Evaluacin a partir de la tasa de correctas. classperf(cp,classes,test); cp.CorrectRate
96
Seleccin de caractersticas
1.8 Kernel Function: linear_kernel 4.5 setosa (training) setosa (classified) versicolor (training) versicolor (classified) Support Vectors setosa (training) setosa (classified) versicolor (training) versicolor (classified) Support Vectors Kernel Function: linear_kernel 1.6
1.4
1.2 3.5 1
0.8 3 0.6
0.4
2.5
0.2
1.5
2.5
3.5
4.5
5.5
4.5
5.5
6.5
97
Despacho 22 ETSII
Introduccin a Matlab y Simulink Javier Ramrez
98