C1 Intro y MATLAB
C1 Intro y MATLAB
1/12 ATC ©
Sumario
• Introducción a asignatura de PDS
• El asistente matemático MATLAB
• Operaciones con vectores y matrices
• Graficación con MATLAB
• Otros tipos de datos en MATLAB
• La programación en MATLAB
2
Introducción: Datos generales de asignatura
• Nombre: Introducción al Procesamiento
Digital de Señales (PDS)
• Horas lectivas: 48 h (3 créditos)
– 12 h de C, 28h de L, 8 h de Ev.
• Profesores:
– Dr.C. Alberto Taboada Crispi, PT, IT (ataboada
@uclv.edu.cu)
– Ms.C. Idileisy Torres Rodríguez, A (itrodriguez
@uclv.edu.cu)
• En:
\\10.12.1.67\docs\MFC\Docencia\Materiales Docentes\Pregrado\Computacion\12a- Optat
ivas\Procesamiento Digital de Señales\
4
Introducción: Objetivos del curso
• Saber realizar operaciones con secuencias
discretas en dominio del tiempo
• Familiarizarse con representación de sec. y
sistemas discretos en dom. frec.
• Saber analizar sistemas LTI mediante
transformada Z
• Saber diseñar y analizar filtros digitales IIR y
FIR y dominar conceptos básicos afines
• Saber utilizar el MATLAB en aplicaciones de
procesamiento digital de señales
5
Introducción: Bibliografía
• A.V. Oppenheim & R. Schafer, Discrete-Time Signal Processing,
Prentice-Hall, 1998.
• M.H. Hayes, Schaum's Outline of Theory and Problems of Digital
Signal Processing, McGraw-Hill, 1999.
• J.H. McClellan, C.R. Burrus, A.V. Oppenheim, T.W. Parks, R. Schafer,
H.W. Schuessler, Computer-Based Exercises for Signal Processing
Using MATLAB 5.0, Prentice Hall, 1998.
• J.G. Proakis & D.G. Manolakis, Tratamiento Digital de Señales:
Principios, Algoritmos y Aplicaciones, 3ra Edición, Prentice Hall,
Madrid, 1998.
• J. Y. Stein, Digital Signal Processing: A Computer Science
Perspective, John Wiley & Sons, Inc., 2000.
• S.W. Smith, The Scientist and Engineer's Guide to Digital Signal
Processing, Second Edition, California Technical Publishing, San
Diego, California, 1999.
• J. García de Jalón, J.I. Rodríguez, J. Vidal, Aprenda MATLAB 7.0
como si estuviera en primero, Universidad Politécnica de Madrid, 2005.
6
Introducción: Otros Recursos…
MATLAB …
% Mastering DSP Concepts
%
% SIGGUI Generation and properties of discrete-time (DT) signals.
% DTSYSGUI Time domain response of DT systems.
% CONVGUI Convolution and correlation of DT signals.
% ALIASGUI Concepts in aliasing.
% INTERGUI Concepts in signal interpolation.
% QUANTGUI Concepts in signal quantization.
% DTFTGUI The discrete-time Fourier transform.
% WINGUI Window functions and their spectral features.
% IDEALGUI Ideal filters and their spectra.
% DFTGUI The discrete Fourier transform and its properties.
% FFTGUI Concepts in aliasing, leakage, windowing and resolution.
% PZPLTGUI Pole-zero pattern and response of DT systems.
% PZGUI Filter design by pole-zero placement.
% S2ZGUI Continuous-time to discrete-time mappings.
% IIRGUI Design of infinite impulse response (IIR) filters.
% FIRGUI Design of finite impulse response (FIR) filters.
% SPECGUI FIR differentiators, Hilbert tranformers and comb filters. 7
Introducción: Evaluación
I. Evaluaciones frecuentes:
I. C, L
II. Informes de laboratorios
II. Trabajos de control parciales:
I. Ev. 1. MATLAB y sistemas discretos
II. Ev. 2. Análisis de Fourier y muestreo de señales
III. Ev. 3. Transformada Z y filtros digitales
III. Tarea extraclase
8
“Quien no se resuelve a cultivar el hábito de
pensar, se pierde el mayor placer de la vida”
Thomas A. Edison
9
Tema
Tema I.
El Asistente Matemático MatLab
10
Sumario
1.1. Introducción
18
El desktop de MatLab
Menú principal
19
El desktop de MatLab
Menú de
acceso rápido
20
El desktop de MatLab
Ventana de
comandos
21
El desktop de MatLab
Espacio y directorio
de trabajo
22
El desktop de MatLab
Historial de trabajo
23
El desktop de MatLab
Novedad de la v_7.0
Barra de Shortcuts
24
El desktop de MatLab
Menú de inicio
25
Menú de inicio
26
Menú de acceso rápido
27
Barra de Shortcuts
28
Creación de Shortcuts (ejemplo)
29
La ventana de comandos
Definir “variables”
Ejecutar instrucciones
Mostrar resultados
Llamada a guiones
Llamada a funciones
30
Historial de comandos
31
Directorio actual de trabajo
32
El espacio de trabajo
34
El editor-debugger
35
La ayuda de MatLab
36
Demos de MatLab
37
Ayuda y recursos “on-line”
38
Ayuda y recursos “on-line”
39
Ayuda y recursos “on-line”
40
Recursos de difícil acceso
41
Salvas de estados y variables
Comando “save”
Sintaxis:
save(‘filename’, ‘var-1’, ..., ‘var-n’, formato);
42
Salvas de estados y variables
Comando “load”
Sintaxis:
load(‘filename’, ‘var-1’, ..., ‘var-n’);
43
Salvas de estados y variables
Comando “diary”
Sintaxis:
diary on; %Activado
diary off; %Desactivado 44
Tiempo y esfuerzo de cálculo
Tema II.
Operaciones con vectores y matrices
48
Sumario
Ejemplos: Se ve en pantalla:
A=[1,2,3; 4,5,6; 7,8,9]
B=[1 2 3; 4 5 6; 7 8 9]
51
Definición de matrices
Observación 1
Los vectores son casos particulares de
matrices donde el número de filas o
columnas es igual a 1.
Ejemplos:
Vector fila Vector columna
52
Definición de matrices
Observación 2
Una vez definida la matriz esta pasa a su
espacio de trabajo (Workspace) y estará
disponible para realizarse cualquier
operación.
Ejemplo:
53
Definición de matrices
Observación 3
MatLab introduce por defecto una
variable llamada (ans) de “answer”
sobre la cual también se puede operar.
Ejemplo:
54
Definición de matrices
Observación 4
En MatLab se permite la creación de
matrices vacías.
Ejemplo:
55
¿Cómo acceder a los valores?
Los elementos de una matriz se acceden
poniendo los 2 índices entre paréntesis
separados por coma (Ej. A(1,2) o A(i,j)).
Ejemplo:
56
¿Cómo acceder a los valores?
Observación 1
Si estamos trabajando con vectores
bastaría colocar un solo índice.
Ejemplo:
57
¿Cómo acceder a los valores?
Observación 2
Aunque las matrices se introducen por
filas estas se almacenan por columnas,
luego se podría acceder a sus elementos
empleando un solo índice.
Ejemplo:
58
Operaciones con matrices
Las matrices se operan a través de
operadores o funciones. Veamos ahora
los operadores.
60
Operaciones con matrices
Ejemplo 2:
61
Matrices predefinidas
63
Operaciones con matrices
Ejemplos:
64
Direccionamiento de matrices
Los elementos de una matriz pueden ser
direccionados a partir de otros vectores.
Ejemplo:
65
Direccionamiento de matrices
Observación 1
En el caso en que trabajásemos con
vectores, estos se direccionarían mediante
otro vector de posiciones.
Ejemplo:
66
Direccionamiento de matrices
Observación 2
Como los elementos de una matriz se
almacenan como columnas podemos
emplear esta característica para
direccionarlas a través de un vector.
67
Direccionamiento de matrices
Ejemplo:
68
El operador (:)
El operador (:) es utilizado para
especificar rangos, su forma de empleo
es muy simple y sus beneficios inmensos.
Forma de empleo:
<vector>=[val_ini : paso : val_fin];
Ejemplo:
69
El operador (:)
70
El operador (:)
Extracción de submatrices.
71
El operador (:)
Extracción de una columna.
72
El operador (:)
Extracción de una fila (última).
73
El operador (:)
Eliminación de una columna.
74
El operador (:)
Nota
Es prudente que se ejercite el trabajo en
este operador probando todas las
combinaciones posibles dada su
importancia para el trabajo posterior.
75
La función (cat)
76
La función (cat)
Ejemplo:
77
Operadores relacionales
78
Operadores lógicos
&& Conjunción
|| Disyunción
~ Negación
xor Disyunción exclusiva
79
Operadores lógicos
Tema III.
Graficación con MatLab
82
Sumario
3.1. Gráficación en 2D
3.1.1. Función plot
3.1.2. Estilos de línea y marcadores en la
función plot
3.1.3. Añadir curvas a un gráfico ya
existente
3.1.4. Comando subplot
83
Sumario
84
Sumario
3.2. Graficación en 3D
3.2.1. Dibujo de líneas: función plot3
3.2.2. Mallados: Funciones meshgrid, mesh
y surf
3.2.3. Líneas de contorno: funciones contour
y contour3
85
Gráficación en 2D
88
Gráficación en 2D
Ejemplo 2:
89
Gráficación en 2D
90
Gráficación en 2D
Ejemplo:
91
Estilos de línea y marcadores
92
Estilos de línea y marcadores
Ejemplo:
93
Añadiendo curvas a un gráfico
95
Comando subplot
Sintaxis:
subplot(m, n, i);
Observación:
Aunque la instrucción subplot puede
introducirse directamente por teclado la
versión 7 de MatLab permite la
incorporación de múltiples gráficos
desde el propio ambiente.
99
Función fplot
Sintaxis:
fplot(‘función’, ‘límites’, ‘markers’, tol);
102
La función plot3
Sintaxis:
plot3(x, y, z, ‘Especif. del gráfico’);
103
La función plot3
Ejemplo:
104
Función meshgrid
Sintaxis:
[x,y]= meshgrid(xini:xfin, yini:yfin);
105
Función mesh
Sintaxis:
mesh(x, y, z);
106
Función mesh
Ejemplo:
107
Función mesh
Observación:
La coloración del gráfico generado por
la función mesh es tomado por defecto
como función de los valores de z.
Los valores del color pueden ser
asignados por el usuarios también a
través de un vector de colores.
108
Función surf
Sintaxis:
surf(x, y, z);
109
Función surf
Ejemplo:
110
Funciones contour y contour3
Sintaxis:
contour(func, num_cur_niv);
contour3(func, num_cur_niv);
111
Función contour
Ejemplo:
112
Función contour3
Ejemplo:
113
Bibliografía
Tema IV.
Otros tipos de datos en MatLab
115
Sumario
116
Cadenas de caracteres
117
Cadenas de caracteres
Ejemplos:
118
Cadenas de caracteres
119
Algunas operaciones con cadenas
120
Algunas operaciones con cadenas
char(v) Convierte un vector de numeros en una cadena
Crea una matriz de caracteres (completando
char(c1,..,cn)
con espacios las cadenas más cortas)
deblank(c) Elimina espacios al final de la cadena
isspace() Detecta si un caracter es un espacio o no
disp(c) Imprime la cadena c
strcomp(c1,c2) Compara las cadenas c1 y c2
Compara los n primeros caracteres de las
strcomp(c1,c2,n)
cadenas c1 y c2
Sustituye c2 por c3 cada vez que aparezca c2 en
strrep(c1,c2,c3)
c1
121
Hipermatrices
122
Definición de hipermatrices
Una hipermatriz es un arreglo de (mxnxk)
elementos.
123
Definición de hipermatrices
Ejemplo 1:
124
Definición de hipermatrices
Ejemplo 2:
125
Estructuras
126
Creación de estructuras
Sintaxis
<identif> = struct (‘field1’, value, ... , ‘fieldn’, value);
127
Creación de estructuras
Ejemplo:
128
Funciones que operan sobre estructuras
129
Cell arrays (matrices de celdas)
Un vector (matriz) de celdas es un vector
cuyos elementos son cada uno de ellos una
variable de tipo cualquiera.
En un Cell array, el primer elemento
puede ser un número, el segundo una
matriz, el tercero una cadena de
caracteres, el cuarto una estructura, etc.
Su homólogo en otros lenguajes es la lista
130
Creación de los Cell arrays
Un vector (matriz) de celdas se crea
empleando llaves para la introducción de
los elementos.
Sintaxis:
vector(i) = {elemento}
matriz(i,j) = {elemento}
131
Creación de los Cell arrays
Ejemplo:
132
Creación de los Cell arrays
Observación
Existe una sintaxis alternativa para la
definición de cell array, que por
comodidad es la más empleada.
Sintaxis:
vector{i} = elemento
matriz{i,j} = elemento
133
Creación de los Cell arrays
Ejemplo:
134
Funciones que operan sobre cell array
135
Conversión entre struct y cell array
Ejemplo:
136
Uso práctico de un cell array
137
Bibliografía
138
Tema
Tema V.
La programación en MatLab
139
Sumario
143
Sentencia if
Estructura condicional conformada a partir
de la sentencia if en su forma simple:
Sintaxis:
if <condición>
<sentencias>
end
144
Sentencia if
Estructura condicional conformada a partir
de la sentencia if en su forma general:
Sintaxis:
if <condición 1>
<sentencias>
elseif <condición 2>
<sentencias>
else
<sentencias> 145
end
Sentencia if
Ejemplo 1: Simple
Ejemplo 2: General
146
Sentencia switch
Estructura condicional conformada a partir
de la sentencia switch en su forma general:
Sintaxis:
switch <expresión>
case <condición>,
<sentencias>
…
otherwise
<sentencias> 147
end
Sentencia switch
Ejemplo:
148
Sentencia switch
Observación
Al igual que en C la secuencia de casos
se interrumpe tan pronto se verifique el
primero de ellos.
La sentencia break es innecesaria en esta
estructura.
149
El bucle for
Sintaxis 1:
for <var-control>= <var-ini>:<paso>:<var-fin>
<sentencias>
end
Sintaxis 2:
for <var-control>= <vector-de-valores>
<sentencias>
end 151
Bucle for
Ejemplo 1: Ejemplo 3:
Ejemplo 2:
152
Bucle for
154
Bucle while
Sintaxis:
while <condición>
<sentencias>
end
155
Bucle while
Observación
157
Sentencia break
158
Sentencia break
Ejemplo:
Se concatenan verticalmente todas las líneas no
vacías del fichero “fft.m”
159
Sentencia continue
160
Sentencia continue
Ejemplo:
Se cuentan todas las líneas no vacías o comentadas.
161
Estructura try .. catch .. end
163
Entrada/salida interactiva de variables
input disp
164
Función input
Sintaxis:
<identificador> = input(‘<Texto deseado>');
165
Función input
Ejemplo:
166
Función input
Observación
Otra posible forma de esta función es la
siguiente (obsérvese el parámetro 's'):
En este caso el texto tecleado se lee y se
devuelve sin evaluar, con lo que se almacena
en una variable como cadena.
Sintaxis:
<identificador> = input(‘<Texto deseado>’, ‘s’); 167
Función input
Ejemplo:
168
Función disp
- script solicitud
- function
ejecución
171
El editor-debugger
172
Las funciones
173
Las funciones
Declaración:
function [var-sal] = nombre(<argumentos>)
175
Los breakpoints
176
Los breakpoints
Observación 1
177
Los breakpoints
178
Bibliografía