introducción a matlab y simulinkugr.es/~javierrp/master_files/seminario de matlab.pdf ·...
TRANSCRIPT
![Page 1: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/1.jpg)
Complementos de Procesado de Señal y Comunicaciones
Máster en Sistemas Multimedia
Introducción a
Matlab y SimulinkJavier Ramírez Pérez de InestrosaDpto. Teoría de la Señal, Telemática y Comunicaciones
Universidad de Granada
Email: [email protected]
Este tutorial se puede obtener en:
http://www.ugr.es/~javierrp
![Page 2: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/2.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 2
¿Qué es Matlab?
MATLAB es un lenguaje de alto nivel para
realizar cálculos cientifico-técnicos.
Integra las herramientas de cálculo
necesarias con otras de visualización así
como, un entorno de programación de fácil
uso.
![Page 3: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/3.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 3
Aplicaciones típicas
Cálculo matemático
Desarrollo de algoritmos
Adquisición de datos
Modelado, simulación y prototipado
Análisis de datos y visualización
Gráficos
Desarrollo de aplicaciones e interfaces
gráficas de usuario (GUI)
![Page 4: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/4.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 4
Más sobre MatLab
MatLab significa “MATrix LABoratory”
El tipo básico de datos es el vector que no requiere ser dimensionado.
Proporciona unos paquetes de extensión (“toolboxes”) para aplicaciones específicas
Estos paquetes incluyen librerías de funciones MatLab (M-files) que extienden las posibilidades de MatLab para resolver problemas específicos
![Page 5: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/5.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 5
El entorno de Matlab
![Page 6: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/6.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 6
Sintaxis
Algunos ejemplos sencillos
Entrada Salida Comentarios
2 + 3
7-5
34*212
1234/5786
2^5
ans = 5
ans = 2
ans = 7208
ans = 0.2173
ans = 32
Los resultados son los esperados.
Nótese que al resultado se le da el nombre ans.
a = sqrt(2) a = 1.4142 Se puede escoger el nombre de la variable.
![Page 7: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/7.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 7
b = a, pi, 2 + 3i
b = 1.4142
ans = 3.1416
ans = 2.0000 +
3.0000i
Se pueden introducir varios
comandos en una sola línea. Pi, i,
y j son constantes.
c = sin(pi)
eps
c = 1.2246e-016
ans = 2.2204e-016
"eps" es el limite actual de
precisión. No se puede operar con
números inferiores a eps.
d =
[1 2 3 4 5 6 7 8 9
]
e = [1:9]
f = 1:9
d = 1 2 3 4 5 6 7 8 9
e = 1 2 3 4 5 6 7 8 9
f = 1 2 3 4 5 6 7 8 9
Definición de vectores. "d", "e",
son "f" vectores. Son iguales. El
operador “:” se utiliza para formar
vectores; cuenta desde el número
inicial al final de uno en uno.
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
1 2 3 4 5 6 7 8 9
Otros usos de “:”. Se utiliza para
acceder a parte o la totalidad de
los datos de un vector o matriz.
![Page 8: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/8.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 8
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.
h * h'
h .* h
h + h
ans = 14
ans = 1 4 9
ans = 2 4 6
Operaciones con vectores. * es la
multiplicación matricial. Las
dimensiones deben ser las apropiadas.
" .* " es la multiplicación componente a
componente.
g = [ 1 2 3;
4 5 6; 7 8 9]
g = 1 2 3
4 5 6
7 8 9
Construcción de matrices.
g(2,3)
g(3,:)
g(2,3) = 4
ans = 6
ans = 7 8 9
g = 1 2 3
4 5 4
7 8 9
Accediendo a los elementos de la
matriz.
":" se utiliza para acceder a una fila
completa.
![Page 9: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/9.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 9
g^2
g .^ 2
ans = 30 36 42
66 81 96
102 126 150
ans = 1 4 9
16 25 36
49 64 81
Multiplica la matriz por ella misma.
Eleva al cuadrado cada elemento de la
matriz.
Entrada Salida Comentarios
![Page 10: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/10.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 10
Control de la salida
El comando format
format compact
Controla el espaciado de líneas.
format long
Muestra los 15 dígitos que se utilizan en el cálculo.
format short
Muestra únicamente cinco dígitos.
“;” al final del comando.
No visualizar salida:
help format
Más información.
![Page 11: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/11.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 11
Más sobre matrices
Funciones incluidas en MatLabEntrada Salida Comentarios
rand(2)
rand(2,3)
ans = 0.9501 0.6068
0.2311 0.4860
ans = 0.8913 0.4565 0.8214
0.7621 0.0185 0.4447
Genera una matriz de
números aleatorios entre 0 y 1
zeros(2)
ones(2)
ans = 0 0
0 0
ans = 1 1
1 1
Genera una matriz 2x2 de
ceros o unos.
eye(2) ans = 1 0
0 1Matriz identidad I.
hilb(3) ans = 1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
Matriz de Hilbert 3x3.
![Page 12: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/12.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 12
Más sobre matrices
Concatenación
Generar nuevas matrices a partir de otras
creadas previamente
Por ejemplo:
Sea la matriz a:
>> a = [1 2; 3 4]
a =
1 2
3 4
![Page 13: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/13.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 13
Entrada Salida
[a, a, a] ans = 1 2 1 2 1 2
3 4 3 4 3 4
[a; a; a] ans = 1 2
3 4
1 2
3 4
1 2
3 4
[a, zeros(2); zeros(2), a'] ans = 1 2 0 0
3 4 0 0
0 0 1 3
0 0 2 4
Más sobre matrices - concatenación
![Page 14: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/14.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 14
Más sobre matrices
Programación Se pueden construir matrices mediante programación
for i=1:10,
for j=1:10,
t(i,j) = i/j;
end
end
No se produciría salida puesto que la única línea que podría generar salida (t(i,j) =i/j;) termina en “;”
Sin el “;”, Matlab escribiría la matriz t 100 veces!!
![Page 15: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/15.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 15
Operaciones con matrices
+, -, *, y /
Definen operaciones con matrices.
Debemos distinguir:
“.*”:
Multiplicación componente a componente.
“*”
Multiplicación matricial.
![Page 16: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/16.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 16
Escalares
Un escalar es un número.
Matlab los almacena como matrices 1x1
Todas las operaciones entre escalares y
matrices se realizan componente a
componente salvo:
La potencia (“^”).
![Page 17: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/17.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 17
Escalares
Ejemplos
Entrada Salida Comentarios
b=2 b=2 Define b como un escalar.
a + bans = 3 4
5 6
La suma se hace componente a
componente.
a * bans = 2 4
6 8Igual que la multiplicación.
a ^ bans = 7 10
15 22Potencia matricial - a*a
a .^ bans = 1 4
9 16
Potencia componente a
componente.
a = 1 2
3 4
![Page 18: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/18.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 18
Vectores
Un vector es una matriz de una sola fila o
columnaEntrada Salida Comentarios
v = [1 2 3]
u = [3 2 1]
v = 1 2 3
u = 3 2 1Define 2 vectores.
v * u Error Las dimensiones no coinciden.
v * u' ans = 10Al tomar la traspuesta se corrige el
error.
dot(v,u) ans = 10Producto escalar (idéntico al
anterior).
cross(v,u) ans = -4 8 -4El producto vectorial sólo se emplea
con vectores en 3 dimensiones.
![Page 19: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/19.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 19
Matrices
Entrada Salida Comentarios
k = [16 2 3;
5 11 10;
9 7 6]
k = 16 2 3
5 11 10
9 7 6
Define una
matriz.
trace(k) ans = 33Traza de una
matriz
rank(k) ans = 3Rango de una
matriz.
det(k) ans = -136Determinante de
una matriz
Matlab tiene numerosas funciones predefinidas (help matfun).
![Page 20: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/20.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 20
Matrices
Entrada Salida Comentarios
inv(k)
ans = 0.0294 -0.0662 0.0956
-0.4412 -0.5074 1.0662
0.4706 0.6912 -1.2206
Inversa de una
matriz
[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
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.
![Page 21: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/21.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 21
Variables en el espacio de trabajo
whos
Lista las variables definidas en el entorno.
>> whos
Name Size Bytes Class
a 100x1 800 double array
b 100x100 80000 double array
c 1x1 8 double array
Grand total is 10101 elements using 80808 bytes
clear
Borra variables del entorno.
![Page 22: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/22.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 22
Resolución de sistemas de ecuaciones
Una de las principales aplicaciones de las matrices es la representación de sistemas de ecuaciones lineales.
Si a es una matriz de coeficientes, x es un vector columna que contiene las incógnitas y b los términos constantes, la ecuación
a x =b
representa el correspondiente sistema de ecuaciones.
![Page 23: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/23.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 23
Resolviendo ecuaciones
Para resolver el sistema en MatLab x = a \ b
x es igual a la inversa de a por b
Ejemplo a = [1 2 3; 4 5 6; 7 8 10]; b = [1 1 1]';
Solución:
x =
-1
1
0
![Page 24: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/24.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 24
Salvar y recuperar datos
Los datos de la sesión se pierden al salir de
MatLab.
Para salvar la sesión (entrada y salida)
Diary(‘session.txt’);
Guarda los comandos introducidos en la sesión.
Diary <ON/OFF> ;
Para salvar una o varias matrices
save datos.mat (guarda todas las variables)
save datos.mat x (sólo guarda x)
![Page 25: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/25.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 25
Salvar y recuperar matrices
save sesion
Salva todas las variables en el archivo binario “sesion.mat”.
save fichero X
Salva sólo la variable X
load sesion
Recupera los datos previamente salvados
Si los ficheros se pueden salvar en formato texto (-ascii). Pueden verse con un editor de textos.
![Page 26: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/26.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 26
Gráficos
El comando básico es: plot
plot(y);
plot(x,y);
plot(x,y,’b+’,x,z,’gx’);
color (b,g) blue,green
Marcador (+,x)
Personalización del gráfico:
title, xlabel, ylabel, legend, grid.
![Page 27: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/27.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 27
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;
![Page 28: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/28.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 28
Resultado:
![Page 29: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/29.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 29
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;
![Page 30: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/30.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 30
Resultado
![Page 31: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/31.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 31
Gráficos tridimensionales
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
mesh(z);
![Page 32: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/32.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Gráficos 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
view(-15,25)
colormap cool
32
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-2
-1
0
1
2
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
![Page 33: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/33.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 33
Programación
Ficheros de comandos (scripts)
Secuencias de comandos.
Al invocarlos se ejecutan en el entorno.
Las variables creadas son globales.
Ficheros de función
Permiten definir funciones propias.
Variables locales.
La información se pasa como parámetros.
Se pueden definir subfunciones.
![Page 34: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/34.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 34
Un ejemplo de función
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;
![Page 35: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/35.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 35
Argumentos de funciones
nargin y nargout
Número de argumentos de entrada y salida con los que se llama a la función.
Ejemplo:function c = testarg1(a,b)
if (nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = a + b;
end
![Page 36: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/36.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 36
Subfunciones
function [media,mediana] = estadistica(u) % Función 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) % Subfunción
% Calcula la media.
a = sum(v)/n;
function m = median(v,n) % Subfunció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
![Page 37: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/37.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 37
Bifurcaciones
Condición
Sentencias
false
true
Condición
true
Bloque 1 Bloque 2
false
Condición 1
false
Condición 2
Bloque 1
Bloque 2
true
Bloque 3
false
true
![Page 38: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/38.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 38
if
Sentencia if
if condición
sentencias
end
Bifurcación multiple
if condición1
bloque1
elseif condición2
bloque2
elseif condición3
bloque3
else
bloque4
end
Ejemplo
if rem(a,2) == 0
disp('a is par')
b = a/2;
end
![Page 39: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/39.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 39
switch
switch expresion
case case1,
bloque1
case {case2, case3, ...}
bloque2
...
otherwise,
bloque3
end
switch valor
case -1
disp('negativo');
case 0
disp('cero');
case 1
disp('positivo');
otherwise
disp('otro');
end
![Page 40: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/40.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 40
Bucles
Condición
Sentencias
false
true
Condición
Sentencias
true
false
![Page 41: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/41.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 41
for
for i = 1:n
sentencias
end
for i = n:-0.2:1
sentencias
end
for i = 1:m
for j = 1:n
sentencias
end
end
for i = vector
sentencias
end
![Page 42: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/42.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 42
while {continue, break}
while condición
sentencias
end
Sentencia continue
Hace que se pase
inmediatamente a la
siguiente iteración
del bucle for o while
Sentencia break
Hace que termine
la ejecución
n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
![Page 43: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/43.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 43
Toolboxes
Toolboxes para DSP y comunicaciones:
Communications Toolbox
Filter Design Toolbox
Image Processing Toolbox
Signal Processing Toolbox
Statistics Toolbox
System Identification Toolbox
Wavelet Toolbox
![Page 44: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/44.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 44
Procesamiento de señales y comunicaciones
Matlab dispone de unas librerías para
tratamiento digital de señales.
Signal Processing Toolbox
Communications Toolbox
![Page 45: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/45.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 45
Filtrado de señales
y= filter(b,a,x);
Filtra la secuencia x con el filtro descrito por b y a.
![Page 46: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/46.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 46
Respuesta en frecuencia
[H,w] = freqz(b,a,N);
Calcula N puntos de la
respuesta en frecuencia del
filtro definido por b y a.
Para el filtro:
y(n)= 0.8·y(n-1) + x(n)
freqz(1,[1 -0.8],256);0 0.2 0.4 0.6 0.8 1
-60
-40
-20
0
Normalized Frequency ( rad/sample)
Ph
as
e (
de
gre
es
)
0 0.2 0.4 0.6 0.8 1-10
0
10
20
Normalized Frequency ( rad/sample)
Ma
gn
itu
de
(d
B)
![Page 47: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/47.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 47
Diseño de filtros
B = FIR1(N,Wn);
Filtro FIR paso baja de orden N.
Wn es la frecuencia de corte normalizada (0<Wn<1).
B = FIR1(N,Wn,'high');
Filtro paso alta.
Wn = [W1 W2]; B = FIR1(N,Wn,'bandpass');
Filtro paso banda.
Wn = [W1 W2]; B = FIR1(N,Wn,'stop');
Filtro rechaza banda (notch).
![Page 48: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/48.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 48
Ejemplo: Filtros FIR paso banda
% Parametros.
N= [8 16 32 64]; % Coeficientes del filtro
Wn = [0.4 0.6]; % Frecuencias de corte.
NFFT= 256; % Respuesta en frecuencia
L = length(N);
H = zeros(NFFT,L);
for i=1:L
B = FIR1(N(i),Wn,'bandpass'); % Diseño.
[H1,W]= freqz(B,1,NFFT); % Respuesta.
H(:,i)= H1;
end
% 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;
0 0.2 0.4 0.6 0.8 1-80
-60
-40
-20
0
w en unidades de
|H|
N=8
N=16
N=32
N=64
0 0.2 0.4 0.6 0.8 1-30
-20
-10
0
10
w en unidades de
Fa
se
de
H (
rad
s)
N=8
N=16
N=32
N=64
![Page 49: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/49.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 49
Diseño y análisis de filtros (fdatool)
![Page 50: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/50.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 50
Signal Processing Tool (SPTool)
![Page 51: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/51.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 51
Signal Processing Tool (SPTool)
![Page 52: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/52.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 52
Signal Processing Tool (SPTool)
![Page 53: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/53.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 53
Signal Processing Tool (SPTool)
![Page 54: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/54.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 54
Diezmado e interpolación
Y = DECIMATE(X,R)
Ejemplo: Decimación 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('Señal original')
figure
stem(y(1:30)); %Decimada
title('Señal decimada')
0 20 40 60 80 100 120-2
-1.5
-1
-0.5
0
0.5
1
1.5
2Señal original
0 5 10 15 20 25 30-2
-1.5
-1
-0.5
0
0.5
1
1.5
2Señal decimada
![Page 55: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/55.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 55
Diezmado e interpolación
Y = INTERP(X,R)
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('Señal original');
figure
stem(y(1:120));
title('Señal interpolada');
0 5 10 15 20 25 30-2
-1.5
-1
-0.5
0
0.5
1
1.5
2Señal original
0 20 40 60 80 100 120-2
-1.5
-1
-0.5
0
0.5
1
1.5
2Señal interpolada
![Page 56: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/56.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 56
Densidad de potencia espectral
periodogram
Fs = 1000; t = 0:1/Fs:.3;
% Una señal coseno de 200Hz más ruido
x = cos(2*pi*t*200)+randn(size(t));
periodogram(x,[],'twosided',512,Fs);
% Se usa la ventana por defecto
pwelch
Fs = 1000; t = 0:1/Fs:.296;
% Una señal coseno de 200 Hz más ruido
x = cos(2*pi*t*200)+randn(size(t));
pwelch(x,[],[],[],Fs,'twosided');
% Ventana por defecto, solapamiento y NFFT.
![Page 57: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/57.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 57
Ejemplos
0 100 200 300 400 500 600 700 800 900-50
-45
-40
-35
-30
-25
-20
-15
-10
Frequency (Hz)
Po
wer
Sp
ectr
al D
en
sit
y (
dB
/Hz)
Periodogram PSD Estimate
0 100 200 300 400 500 600 700 800 900-34
-32
-30
-28
-26
-24
-22
-20
-18
-16
Frequency (Hz)
Po
wer
Sp
ectr
al D
en
sit
y (
dB
/Hz)
Welch PSD Estimate
![Page 58: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/58.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 58
Estimación espectral paramétrica
Método de covarianza
pcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pcov(y,4,[],1000);
Método de covarianza modificado
pmcov(X,ORDER,NFFT,Fs)
randn('state',1);
x = randn(100,1);
y = filter(1,[1 1/2 1/3 1/4 1/5],x);
pmcov(y,4,[],1000);
![Page 59: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/59.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 59
Ejemplos
0 100 200 300 400 500-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
Po
we
r S
pe
ctr
al D
en
sit
y (
dB
/Hz)
Covariance PSD Estimate
0 100 200 300 400 500-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
Po
we
r S
pe
ctr
al D
en
sit
y (
dB
/Hz)
Modified Covariance PSD Estimate
0 100 200 300 400 500-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
Po
we
r S
pe
ctr
al D
en
sit
y (
dB
/Hz)
Burg PSD Estimate
0 100 200 300 400 500-38
-36
-34
-32
-30
-28
-26
-24
Frequency (Hz)
Po
we
r S
pe
ctr
al D
en
sit
y (
dB
/Hz)
Yule-Walker PSD Estimate
![Page 60: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/60.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 60
Modelado. Predicción lineal
Predictor lineal: Estima la muestra siguiente utilizando N muestras
anteriores.
[A,E] = LPC(X,N)
Calcula:
Los coeficientes del predictor, A.
La varianza del error, E.
)(nx Predictor
lineal
N
iinxiAnx
1)()1()(ˆ
)(ˆ nx )(ˆ)()( nxnxne
Minimizando J= E{|e(n)|2}
![Page 61: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/61.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 61
Comunicaciones
Funciones principales:
Generación de señales aleatorias
Análisis de errores
Codificación de la fuente (escalar, diferencial)
Codificación para el control de errores
(convolucional, codificación lineal de bloques)
Modulación y demodulación (analógica y digital)
Filtrado mediante filtros especiales
Aritmética en cuerpos de Galois
![Page 62: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/62.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 62
Modulación analógica y digital
![Page 63: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/63.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 63
Funciones utilizadas frecuentemente
randint
Genera una matriz de números aleatorios enteros
uniformemente distribuidos. out = randint; % Un solo valor [0,1]
out = randint(N); % Matriz cuadrada NN
out = randint(M,N); % Matriz MN
out = randint(M,N,rg); % Se especifica el rango.
![Page 64: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/64.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 64
Modulación/demodulación digital
![Page 65: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/65.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 65
Modulación/demodulación digital
“Mapping”+modulación/demodulación dmodce/ddemodce
y = dmodce(x,Fd,Fs,'method/nomap'...);
y = dmodce(x,Fd,Fs,'ask',M);
y = dmodce(x,Fd,Fs,'fsk',M,tone);
y = dmodce(x,Fd,Fs,'msk');
y = dmodce(x,Fd,Fs,'psk',M);
y = dmodce(x,Fd,Fs,'qask',M);
y = dmodce(x,Fd,Fs,'qask/arb',inphase,quadr);
y = dmodce(x,Fd,Fs,'qask/cir',numsig,amp,phs);
y = dmodce(x,Fd,[Fs initphase],...);
Sólo “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);
![Page 66: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/66.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 66
Ejemplo
M = 16; % Modulación M-aria.
Fd = 1; % Se muestrea el mensaje original
% a una muestra por segundo.
Fs = 3; % La señal modulada se muestrea
% a una frecuencia de 3 muestras por segundo.
x = randint(100,1,M); % Mensaje digital aleatorio.
% Modulación M-ary PSK
y = dmodce(x,Fd,Fs,'psk',M);
% Adición de ruido Gaussiano.
ynoisy = y + .04*randn(300,1) + .04*j*randn(300,1);
% Diagrama de dispersión a partir de las observaciones ruidosas.
scatterplot(ynoisy,1,0,'b.');
% Demodulación para recuperar el mensaje
z = ddemodce(ynoisy,Fd,Fs,'psk',M);
s = symerr(x,z) % Comprobar la tasa de error de los símbolos.
![Page 67: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/67.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 67
Gráfico de dispersión (ruido)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Qu
ad
ratu
re
In-Phase
Scatter plot
![Page 68: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/68.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 68
Análisis de errores
biterr
Calcula el número de bits erróneos y la tasa de error.
[number,ratio] = biterr(x,y);
[number,ratio] = biterr(x,y,k);
[number,ratio] = biterr(...,flg);
[number,ratio,individual] = biterr(...)
![Page 69: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/69.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 69
Ejemplo
x = randint(100,100,4); % Señal original
% Introducción de errores.
% Los errores pueden ser 1, 2, o 3 (no 0).
% Colocación de los errores
errorplace = (rand(100,100) > .9);
errorvalue = randint(100,100,[1,3]); % Valor error
errors = errorplace.*errorvalue;
y = rem(x+errors,4); % Señal y error sumadas mod 4
% Análisis de errores
format short
[num_bit,ratio_bit] = biterr(x,y,2)
[num_sym,ratio_sym] = symerr(x,y)
![Page 70: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/70.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 70
Ejercicio:
Estudiar mediante Matlab/Simulink el efecto del ruido en los sistemas de comunicación digital.
Construir el diagrama de bloques de simulación.
Simular el sistema: Diferentes esquemas de modulación (ASK, PSK, FSK,
MSK).
Obtener las curvas de error en función de la SNR.
Adicionalmente, considérese PSK con M= 4 y 8 símbolos y compárese las curvas de error frente a la SNR.
![Page 71: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/71.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 71
Introducción a Simulink
Simulink es una herramienta para modelado,
simulación y análisis de sistemas dinámicos.
Soporta tanto sistemas lineales como no
lineales:
en tiempo continuo,
muestreados,
híbridos y
sistemas multifrecuencia (contienen sistemas
muestreados a diferente frecuencia).
![Page 72: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/72.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 72
Entorno de trabajo
![Page 73: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/73.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 73
Construcción del diagrama de bloques
![Page 74: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/74.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 74
Resultado de la simulación
0 500 1000 1500 2000 2500 3000-1
-0.5
0
0.5
1
0 0.5 1 1.5 2 2.5 3
x 104
-1
-0.5
0
0.5
1
![Page 75: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/75.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 75
Ejemplo
![Page 76: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/76.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 76
Simulación
![Page 77: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/77.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 77
Análisis/síntesis LPC de la señal de voz
![Page 78: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/78.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 78
Estimación espectral
![Page 79: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/79.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 79
Resultado de la simulación
![Page 80: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/80.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 80
Sistema de comunicación digital
8-PSK (Gray)
![Page 81: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/81.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Procesado de imágenes
Lectura de imágenes: 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)
[X, map] = imread(...)
map Mapa de color
Visualización de la imagen imshow imshow(I)
imshow(I,[low high])
imshow(RGB)
imshow(BW)
imshow(X,map)
81
![Page 82: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/82.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Lectura de imágenes
A= imread('texto.tif');
imshow(A);
size(A); size(A);
500500
[B map]=
imread('flor.tif');
imshow(B); size(A);
5005003
82
![Page 83: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/83.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Transformaciones espaciales
Modificación del tamaño B = imresize(A, scale)
B = imresize(A, [mrows ncols])
Rotar una imagen B = imrotate(A,angle)
B = imrotate(A,angle,method)
method -> Interpolación {‘nearest’}, ‘bilinear’, ‘bicubic’
B = imrotate(A,angle,method,bbox)
bbox -> Bounding box {‘crop’} ‘loose’
Recortar una imagen B= imcrop(A); Herramienta interactiva
B= imcrop(A,rect);
83
![Page 84: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/84.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Filtrado 2D
B= imfilter(A,h) N= 5;
h = ones(N,N) / (N*N);
Af = imfilter(A,h);
84
Original Filtrada N= 5 Filtrada N= 20
![Page 85: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/85.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Respuesta en frecuencia de filtros 2D
[H, f1, f2] = freqz2(h, n1, n2)
[H, f1, f2] = freqz2(h, [n2 n1])
[H, f1, f2] = freqz2(h)
[H, f1, f2] = freqz2(h, f1, f2)
85
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
Fx
Fy
Magnitude
Filtro 55 Filtro 2020-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
Fx
Fy
Magnitude
![Page 86: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/86.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Diseño de filtros 2D
h = fwind1(Hd, win)
h = fwind1(Hd, win1, win2)
h = fwind1(f1, f2, Hd,...)
Ejemplo:
[f1,f2] = freqspace(21,'meshgrid');
Hd = ones(21);
r = sqrt(f1.^2 + f2.^2);
Hd((r<0.1)|(r>0.5)) = 0;
colormap(jet(64));
mesh(f1,f2,Hd);
h = fwind1(Hd,hamming(21));
freqz2(h);
86
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.2
0.4
0.6
0.8
1
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
10
0.5
1
1.5
Fx
Fy
Magnitude
![Page 87: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/87.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Ajuste del nivel de intensidad
87
0 100 2000
2000
4000
6000
0 100 2000
5000
10000
15000
0 100 2000
1000
2000
3000
4000
![Page 88: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/88.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Ecualización del histograma
88
0 100 2000
50
100
150
200
250
0 100 2000
50
100
150
200
250
0 100 2000
50
100
150
200
250
![Page 89: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/89.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Ecualización del histograma
89
0 50 100 150 200 2500
2000
4000
6000
0 50 100 150 2000
5000
10000
15000
0 50 100 150 200 2500
2000
4000
0 50 100 150 200 2500
100
200
0 50 100 150 200 2500
100
200
0 50 100 150 200 2500
100
200
0 50 100 150 200 2500
1000
2000
0 50 100 150 200 2500
5000
10000
15000
0 50 100 150 200 2500
1000
2000
![Page 90: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/90.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Filtrado de ruido (Filtro de Wiener)
J = wiener2(I, [m n], noise)
[J, noise] = wiener2(I, [m n])
Wiener2 estima la media y la varianza entorno a cada pixel
A continuación crea un filtro pixel a pixel basado en estas estimaciones
v2es la varianza del ruido
90
![Page 91: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/91.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Matlab para reconocimiento de patrones
Asignación de una clase a un vector de
características x del objeto a clasificar:
Ejemplo: Fisher Iris dataset:
http://en.wikipedia.org/wiki/Iris_flower_data_set
503 = 150 muestras de flores Iris de tres especies
Iris setosa, Iris virginica, Iris versicolor
4 características de cada ejemplo:
Longitud y anchura de los pétalos y sépalos
91
![Page 92: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/92.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Matlab para reconocimiento de patrones
Análisis discriminante: class = classify(sample,training,group)
class = classify(sample,training,group,type)
class = classify(sample,training,group,type,prior)
knn: Class = knnclassify(Sample, Training, Group)
Class = knnclassify(Sample, Training, Group, k)
Class = knnclassify(Sample, Training, Group, k, distance)
Class = knnclassify(Sample, Training, Group, k, distance, rule)
Máquinas de vectores de soporte: Group = svmclassify(SVMStruct, Sample)
Group = svmclassify(SVMStruct, Sample, 'Showplot‘,ShowplotValue)
SVMStruct = svmtrain(Training, Group)
SVMStruct =svmtrain(..., 'Kernel_Function', Kernel_FunctionValue)
92
![Page 93: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/93.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Análisis discriminante: Ejemplo
load fisheriris
SL = meas(51:end,1);
SW = meas(51:end,2);
group = species(51:end);
h1 = gscatter(SL,SW,group,'rb','v^',[],'off');
set(h1,'LineWidth',2)
legend('Fisher versicolor','Fisher virginica','Location','NW')
93
4.5 5 5.5 6 6.5 7 7.5 82
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
SL
SW
Fisher versicolor
Fisher virginica
![Page 94: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/94.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Análisis discriminante: Ejemplo
Clasificamos una
matriz de datos 2-D:[X,Y] =
meshgrid(linspace(4.5,8)
,linspace(2,4));
X = X(:); Y = Y(:);
[C,err,P,logp,coeff] =
classify([X Y],[SL SW],
group,'quadratic');
Visualizar la
clasificación: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
![Page 95: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/95.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Análisis discriminante: Ejemplo
95
4.5 5 5.5 6 6.5 7 7.5 82
2.2
2.4
2.6
2.8
3
3.2
3.4
3.6
3.8
4
SL
SW
Classification with Fisher Training Data
Fisher versicolor
Fisher virginica
![Page 96: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/96.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Selección de características
[IDX, Z]= rankfeatures(X, Group)
[IDX, Z]= rankfeatures(X, Group,'Criterion', CriterionValue)
load fisheriris;
X= meas(1:100,:);
Group= species(1:100);
[IDX, Z] = rankfeatures(X',Group);
% Selecionamos las variables más discriminativas
data= X(:,[IDX(1) IDX(2)]);
% Selección aleatoria de subconjuntos de entrenamiento y test
[train, test] = crossvalind('holdOut',Group);
cp = classperf(Group);
% Entrenamiento de una máquina de vectores de soporte
svmStruct = svmtrain(data(train,:),Group(train),'showplot',true);
% Añadimos título.
title(sprintf('Kernel Function: %s',...
func2str(svmStruct.KernelFunction)),...
'interpreter','none');
% Clasificación del conjunto de test
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
% Evaluación a partir de la tasa de correctas.
classperf(cp,classes,test);
cp.CorrectRate
96
![Page 97: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/97.jpg)
Introducción a Matlab y SimulinkJavier Ramírez
Selección de características
97
data= X(:,[IDX(1) IDX(2)]); data= X(:,[IDX(3) IDX(4)]);
1 1.5 2 2.5 3 3.5 4 4.5 5 5.50
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8Kernel Function: linear_kernel
setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
4 4.5 5 5.5 6 6.5 72
2.5
3
3.5
4
4.5Kernel Function: linear_kernel
setosa (training)
setosa (classified)
versicolor (training)
versicolor (classified)
Support Vectors
![Page 98: Introducción a Matlab y Simulinkugr.es/~javierrp/master_files/Seminario de Matlab.pdf · Resolución de sistemas de ecuaciones Una de las principales aplicaciones de las matrices](https://reader035.vdocumento.com/reader035/viewer/2022070109/6043f739a1abfb647e69348c/html5/thumbnails/98.jpg)
Introducción a Matlab y SimulinkJavier Ramírez 98
Estas transparencias se pueden obtener en:
http://www.ugr.es/~javierrp
Para cualquier consulta:
Javier Ramírez ([email protected])
Dpto. Teoría de la Señal, Telemática y Comunicaciones
Despacho 22
ETSII