0% encontró este documento útil (0 votos)
34 vistas180 páginas

C1 Intro y MATLAB

Este documento proporciona una introducción al curso de Procesamiento Digital de Señales impartido por el Prof. Alberto Taboada Crispi. El curso dura 48 horas y cubre temas como MATLAB, señales y sistemas discretos, herramientas de Fourier, muestreo, transformada Z y filtros digitales. El objetivo es que los estudiantes aprendan conceptos y herramientas básicas de procesamiento digital de señales y cómo utilizar MATLAB para aplicaciones en este campo.

Cargado por

Zombatar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas180 páginas

C1 Intro y MATLAB

Este documento proporciona una introducción al curso de Procesamiento Digital de Señales impartido por el Prof. Alberto Taboada Crispi. El curso dura 48 horas y cubre temas como MATLAB, señales y sistemas discretos, herramientas de Fourier, muestreo, transformada Z y filtros digitales. El objetivo es que los estudiantes aprendan conceptos y herramientas básicas de procesamiento digital de señales y cómo utilizar MATLAB para aplicaciones en este campo.

Cargado por

Zombatar
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 180

Procesamiento Digital de Señales

Prof. Alberto Taboada Crispi, CEETI/UCLV

C1: Introducción al curso.


Introducción al MATLAB.

Objetivo: Conocer principales características


de la programación en 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\

• Preparado a partir de cursos en Maestría en Señales y Sistemas: Programación en 3


Introducción: Contenidos del curso
Temas:
I.MATLAB + Señales y sistemas discretos
II.Herramientas de Fourier + Muestreo
III.Transformada Z + Filtros digitales

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

Curso de iniciación al trabajo con


MatLab 7.0
Prof. Ing. Alexeis Companioni

9
Tema

Tema I.
El Asistente Matemático MatLab

10
Sumario

1.1. Introducción

1.2. El entorno de trabajo de MatLab


1.2.1. El Escritorio de Matlab (Matlab
Desktop)
1.2.2. El menú inicio
1.2.3. Command Window
1.2.4. Command History Browser 11
Sumario

1.2.5. Current Directory Browser


1.2.6. Workspace Browser y Array Editor
1.2.7. El Editor-Debugger
1.3. Salvas de estados y variables en una
sección (save, load, diary)
1.4. Medidas de tiempo y esfuerzo de cálculo
12
Introducción
MatLab es un asistente matemático de
gran capacidad para el cálculo y la
visualización cuyo nombre proviene de
las palabras Matrix-Laboratory.
Aunque fue desarrollado inicialmente
(1984) para el trabajo exclusivo con
matrices también puede trabajar con
escalares (reales y complejos) así como
con cadenas de caracteres. 13
Introducción
• Alta capacidad de
Matrix-Laboratory cálculo numérico
• Visualización
• Cálculo simbólico
• Lenguaje propio

Matrices Escalares Cadenas


14
Potencialidades
1. Posee un lenguaje de alto desempeño
bastante fácil de aprender.
2. Posee una elevada interacción con los
SoftWare existentes (Maple, Excel).
3. Posibilidad de ser instalado sobre
diferentes SO.
4. Alrededor de este SoftWare se nuclea una
comunidad de mucho más de 1 000 000 de
usuarios entre estudiantes y especialistas. 15
Potencialidades
5. Posee ayudas tanto On-line como Off-line
de inmensas prestaciones.
6. Existe un centro de recursos arbitrado que
almacena organizadamente la experiencia
de múltiples especialistas de todo el mundo.
7. Las bibliografías han sido exquisitamente
validadas y en ocasiones programadas por
los propios descubridores (ej. Wavelets
Toolbox). 16
Debilidades
1. Lenguaje interpretado.
2. Aunque es muy rápido en los cálculos
utilizando código nativo en otros cálculos
pudiera ser bastante más lento que
utilizando código C++ u otro.
3. Aunque posee herramientas para la
exportación de código, estas no son del todo
eficiente (MatLab Compiler, MatLab
ComBuilder). 17
El desktop de MatLab

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

Identificadores Valores Tipo de dato


33
Editor de arreglos

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”

Se emplea para guardar en disco el


espacio de trabajo o variables
particulares que existan en este.

Sintaxis:
save(‘filename’, ‘var-1’, ..., ‘var-n’, formato);
42
Salvas de estados y variables

Comando “load”

Permite cargar variables existentes en un


fichero en el espacio de trabajo.

Sintaxis:
load(‘filename’, ‘var-1’, ..., ‘var-n’);
43
Salvas de estados y variables

Comando “diary”

Este comando posibilita guardar un


record completo de todas las acciones
realizadas en la ventana de comandos.

Sintaxis:
diary on; %Activado
diary off; %Desactivado 44
Tiempo y esfuerzo de cálculo

En MatLab está abierta la posibilidad de


obtener los tiempos de cálculo de una
forma muy sencilla para el usuario,
siendo esto en muchas ocasiones de suma
importancia.

Para este fin se emplean las funciones:


cputime; etime y tic ops toc
45
Tiempo de cálculo (ejemplo)
Se desea resolver un sistema lineal arbitrario con
1000 Ecs. de la forma:
Ax=b  x=A-1b = A\b
>> n=1000;
>> A=rand(n);
>> b=rand(n,1);
>> x=zeros(n,1);
>> tiempoIni=clock; x=A\b; tiempo=etime(clock, tiempoIni)
>> time=cputime; x=A\b; time=cputime-time
>> tic; x=A\b; toc 46
Bibliografía

1. Aprenda Matlab 7.0 como si


estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la sección “demos” de la
ayuda de Matlab:
• “Desktop Tools and Development
Environment” (primeros 5 videos)
• “New Features in Version 7”
47
(primer video)
Tema

Tema II.
Operaciones con vectores y matrices

48
Sumario

2.1. Definición de matrices desde el teclado


2.2. Operaciones con matrices
2.3. Matrices predefinidas
2.4. Direccionamiento de matrices y vectores.
El operador (:) y la función (cat)
2.5. Operadores relacionales
2.6. Operadores lógicos
49
Definición de matrices
Las matrices son un tipo común de
variable que es empleado en la mayoría
de los lenguajes de programación. En
MatLab estas se convierten en el centro
de atención.

Por convenio emplearemos mayúscula


para representar matrices y minúscula
para vectores y escalares.
50
Definición de matrices
Las matrices se definen por filas, los
elementos de la fila se separan por
espacios o comas (,) mientras que las
filas van separadas por punto y coma (;)

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.

Adición / División (derecha)


+
Substracción \ División (izquierda)
-
Multiplicación Mult. y Potenciación
* .* y .^ elemento a elemento
‘ Traspuesta
Div. (derecha y izquierda)
^ Potencia ./ y .\
elemento a elemento
59
Operaciones con matrices
Ejemplo 1:

60
Operaciones con matrices
Ejemplo 2:

61
Matrices predefinidas

eye(n) Matriz unitaria (n x n)


zeros(n) Matriz de ceros (n x n)
zeros(n,m) Matriz de ceros (n x m)
ones(n) Matriz de unos (n x n)
ones(n,m) Matriz de unos (n x m)
rand(n) Matriz de números aleatorios entre 0 y 1 (n x n)
rand(n,m) Matriz de números aleatorios entre 0 y 1 (n x m)
linspace Genera un vector con n valores entre x1 y x2
(x1,x2,n) igualmente espaciados
magic(n) Genera una matriz mágica (n x n)
62
Operaciones con matrices
Ejemplos:

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 (:)

El operador (:) se muestra mucho más


potente cuando se trabaja con matrices.

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)

La función (cat) se emplea para


concatenar matrices a lo largo de una
dimensión especificada.
Al igual que el operador (:) es de una
gran utilidad cuando se trabaja con
matrices.

76
La función (cat)
Ejemplo:

77
Operadores relacionales

< Menor que


<= Menor o igual a
> Mayor que
>= Mayor o igual a
== Igual a
~= Distinto de

78
Operadores lógicos

&& Conjunción
|| Disyunción
~ Negación
xor Disyunción exclusiva

79
Operadores lógicos

Comprueba si todos los elementos del vector (v)


all(v) cumplen la condición. Devuelve 0 o 1
Se aplica por separado a cada columna de (A). El
all(A) resultado es un vector de ceros y unos.
Comprueba si alguno de los elementos del vector
any(v) (v) cumplen la condición. Devuelve 0 o 1
Se aplica por separado a cada columna de (A). El
any(A) resultado es un vector de ceros y unos.
Determina los índices de elementos de (v) que
find(v) cumplen la condición.
Cuando se aplica a una matriz, esta se considera
find(A) como un vector (una columna traz otra) 80
Bibliografía

1. Aprenda Matlab 7.0 como si


estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la sección “demos” de la
ayuda de Matlab:
• “Basic Matrix Operations”
• “Matrix Manipulation”
81
Tema

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

3.1.5. Función fplot


3.1.6. Otros tipos de gráficas 2D

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

MatLab proporciona una variedad


importante de funciones para
representar gráficamente datos
vectoriales tanto en 2D como en 3D.

Adicionalmente pone a disposición de


usuario otro grupo de funciones para la
manipulación e impresión de los gráficos
creados. 86
Gráficación en 2D

Funciones más empleadas en la


representación de datos

plot Crea gráfico con escala lineal en ambos ejes


Crea gráfico con escala logaritmica en ambos
loglog
ejes
Crea gráfico con escala logaritmica en el eje X
semilogx
y lineal en el eje Y
Crea gráfico con escala logaritmica en el eje Y
semilogy
y lineal en el eje X
87
Gráficación en 2D
Ejemplo 1:

88
Gráficación en 2D
Ejemplo 2:

89
Gráficación en 2D

¿Cómo añadir información al gráfico?

title(´título´) Agrega untítulo al dibujo


xlabel(´...´) Agrega un título al eje ´X´. xlabel off lo elimina
ylabel(´...´) Agrega un título al eje ´Y´. ylabel off lo elimina
legend() Define rótulos para las líneas
grid Activa la cuadrícula en el dibujo

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

Para añadir nuevas líneas (curvas) a un


gráfico ya existente se emplean los
comandos: hold on y hold off.

El comando hold on permite que se


mantengan los gráficos existentes a pesar
de que pueda ocurrir un reescalamiento.
La instrucción hold off elimina esta
posibilidad. 94
Añadiendo curvas a un gráfico
Ejemplo:

95
Comando subplot

Las ventanas gráficas se pueden


subdividir en m filas y n columnas
siendo cada celda un gráfico diferente.

Sintaxis:
subplot(m, n, i);

donde i es el gráfico activo.


96
Comando subplot

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.

Véase la sección Graphics de los “New


Features in Version 7” de MatLab. 97
Otros tipos de gráficas 2D

MatLab dispone de varios tipos de


gráficos distintos a los que genera la
función plot, algunas de ellas son:

bar() Gráfico de barras verticales (barh() horiz)


bar3() Gráfico de barras verticales 3D (bar3h() horiz)
pie() Gráfico de pastel
pie3 Gráfico de pastel 3D
stairs() Gráfico de barras sin líneas internas
hist() Representa el histograma de un vector 98
Otros tipos de gráficas 2D
Ejemplo:

99
Función fplot

A diferencia de la función plot donde


había que especificar un vector de
valores [x,y] a la función fplot solo hay
que especificarle el nombre de una
función o fichero donde encontrarla sin
preocuparnos por detalles como el de la
pendiente por citar tan solo un ejemplo.
100
Función fplot

Sintaxis:
fplot(‘función’, ‘límites’, ‘markers’, tol);

función Nombre de la función o fichero *.m


Vector de elementos [xmin,xmax] o
límites
[xmin,xmax,ymin,ymax]
Cadena para controlar el color, estilo etc (igual
markers
que en la función plot)
tol Tolerancia del error relativo. Default (2e-03)
101
Graficación en 3D

MatLab posee excelentes cualidades


para la graficación en 3D de curvas y
superficies y tal vez sea esta una de las
cosas más interesantes a los ojos de
cualquier profesor o estudiante de las
carreras de ingeniería.

102
La función plot3

La función plot3 es la homóloga de la


función plot para la graficación en 2D.

Sintaxis:
plot3(x, y, z, ‘Especif. del gráfico’);

103
La función plot3
Ejemplo:

104
Función meshgrid

La función meshgrid se emplea para


generar dos matrices de
coordenadas que son empleadas en
la representación tridimensional.

Sintaxis:
[x,y]= meshgrid(xini:xfin, yini:yfin);
105
Función mesh

La función mesh construye un


mayado paramétrico tridimensional
a partir de las matrices x, y, z.

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

La función surf genera un gráfico


tridimensional rellenado a partir de
las matrices x, y, z de manera similar
a la función mesh.

Sintaxis:
surf(x, y, z);
109
Función surf
Ejemplo:

110
Funciones contour y contour3

Las funciones contour y contour3


generan un gráfico tridimensional a
través de un conjunto de líneas de nivel
de la función argumento.

Sintaxis:
contour(func, num_cur_niv);
contour3(func, num_cur_niv);
111
Función contour
Ejemplo:

112
Función contour3
Ejemplo:

113
Bibliografía

1. Aprenda Matlab 7.0 como si


estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la sección “demos” de la
ayuda de Matlab:
• “Graphics” (XY plots in MatLab y XYZ
plots in MatLab)
• “New Features in Version 7”
114
(Quinto video)
Tema

Tema IV.
Otros tipos de datos en MatLab

115
Sumario

4.1. Cadenas de caracteres


4.2. Hipermatrices (arreglos de más de 2
dim.)
4.3. Estructuras
4.4. Cell arrays (matrices de celdas)

116
Cadenas de caracteres

MatLab también opera con cadenas de


caracteres, muy similar a como se hace
con lenguajes tan conocidos como C++.

Los caracteres de una cadena se


almacenan en un vector de manera que
existirá un carácter por elemento.

117
Cadenas de caracteres

Una cadena carácter se representa entre


comillas simples (‘cadena’).

Ejemplos:

118
Cadenas de caracteres

Para representar un carácter en MatLab


se emplean 2 bytes o sea 16 bits.

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

MatLab permite trabajar con matrices


de más de dos dimensiones es decir
hipermatrices.

La aplicación fundamental de este hecho


es almacenar bajo un único nombre
distintas matrices de un mismo tamaño

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

Una estructura (struct) no es más que


una agrupación de datos de tipos
diferentes bajo un mismo nombre que
conforman en sí un nuevo tipo de dato.

Los datos de una estructura se


denominan campos o miembros.

126
Creación de estructuras

Aunque una estructura puede crearse


elemento a elemento existe una forma
mucho más eficiente y sencilla de
trabajar:

Sintaxis
<identif> = struct (‘field1’, value, ... , ‘fieldn’, value);
127
Creación de estructuras

Ejemplo:

128
Funciones que operan sobre estructuras

fieldnames() Convierte un vector de numeros en una cadena


Crea una matriz de caracteres (completando
isfield(ST,s)
con espacios las cadenas más cortas)
isstruct(ST) Elimina espacios al final de la cadena
rmfield(ST,s) Detecta si un caracter es un espacio o no
getfiel(ST,s) Imprime la cadena c
setfield(ST,s) Compara las cadenas c1 y c2

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

cell(m,n) Crea un cell array vacio de m x n


celldisp(cell ar) Muestra el contenido de tadas las celdeas del ca
cellplot(cell ar) Representa graficamente las celdas de ca
iscell(cell ar) Indica si (cell ar) es un vector de celdas
num2cell() Convierte un array numérico en cell array
cell2struct() Convierte un cell array en una estructura
struct2cell() Convierte una estructura en un cell array

135
Conversión entre struct y cell array

Ejemplo:

136
Uso práctico de un cell array

En este ejemplo se pretende resolver un


sistema de ecuaciones lineales que ha sido
previamente almacenado en un cell array.

137
Bibliografía

1. Aprenda Matlab 7.0 como si


estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la sección “demos” de la
ayuda de Matlab:
• “Programming” (Manipulating Multidimensional
Arrays) y (Structures)

138
Tema

Tema V.
La programación en MatLab

139
Sumario

5.1. Estructuras condicionales y bucles


5.1.1. Sentencia if
5.1.2. Sentencia switch
5.1.3. Bucle for
5.1.4. Buble while
5.1.5. Sentencia break
5.1.6. Sentencia continue
140
5.1.5. Estructura try .. catch .. end
Sumario

5.2. Entrada/salida interactiva de variables


5.2.1. función input
5.2.2. función disp

5.3. El fichero *.m


5.4. El editor-debugger
5.4.1. Declaración de funciones
141
5.4.2. Empleo de los breakpoints
Estructuras condicionales y bucles
MatLab posee un lenguaje de programación
propio que dispone de sentencias para
realizar “bifurcaciones” y bucles.
Las bifurcaciones permiten realizar una u
otra operación según se cumpla o no una
determinada condición.

Los bucles permiten repetir las mismas o


análogas operaciones sobre datos distintos.
142
Estructuras condicionales

En MatLab existen dos estructuras


condicionales fundamentales: una de
ellas se conforma a partir de la sentencia
if y la otra a partir de la sentencia
switch.

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

El bucle for repite un conjunto de


instrucciones un número predeterminado
de veces.
La estructura del bucle for de MatLab es
muy diferente a su homóloga en otros
lenguajes como C/C++/Java, no contando
esta con la misma generalidad.
150
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

El bucle for de MatLab, al igual que en


otros lenguajes, puede anidarse.
Sintaxis:
for <var-control1>= <var-ini1>:<paso1>:<var-fin1>
for <var-control2>= <var-ini2>:<paso2>:<var-fin2>
<sentencias>
end
end
153
Bucle for anidado
Ejemplo:
Transpuesta de una matriz (m x n).

154
Bucle while

El bucle while de MatLab, es muy


similar al lenguajes como C/C++/Java.

Sintaxis:
while <condición>
<sentencias>
end

155
Bucle while

Observación

<condición> puede ser una expresión


vectorial o matricial.
Las instrucciones se ejecutarán mientras
haya algún elemento distinto de cero en la
<condición>, es decir, mientras haya
algún o algunos elementos true (1 lógico).
156
Bucle while
Ejemplo:
Determinación de raíces cuadradas.

157
Sentencia break

Al igual que en C/C++/Java, la sentencia


break hace que se termine la ejecución
del bucle for y/o while más interno de los
que comprenden a dicha sentencia.

158
Sentencia break
Ejemplo:
Se concatenan verticalmente todas las líneas no
vacías del fichero “fft.m”

159
Sentencia continue

La sentencia continue hace que se pase


inmediatamente a la siguiente iteración
del bucle for o while, saltando todas las
sentencias que hay entre el continue y el
fin del bucle en la iteración actual.

160
Sentencia continue
Ejemplo:
Se cuentan todas las líneas no vacías o comentadas.

161
Estructura try .. catch .. end

Permite gestionar los errores que se


pueden producir en tiempo de ejecución.
Sintaxis:
try
<sentencias>
catch
<sentencias>
end
162
Estructura try .. catch .. end
Ejemplo:

163
Entrada/salida interactiva de variables

En MatLab se introducen algunas funciones


sencillas (input, disp) para la entrada y salida
interactiva de variables, no obstante se
incorporan otras más potentes que pueden ser
vistas en la bibliografía recomendada.

input disp

164
Función input

La función input permite imprimir un


mensaje en la línea de comandos de
MatLab y recuperar como valor de
retorno un valor numérico o el resultado
de una expresión tecleada por el usuario.

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

La función disp permite imprimir en


pantalla un mensaje de texto o el valor de
una matriz, pero sin imprimir su nombre.
Las cadenas de caracteres son un caso
particular de vectores.
Sintaxis:
disp('<Texto deseado>');
169
El fichero *.m

Los ficheros con extensión (.m) son ficheros de


texto sin formato (ASCII) y constituyen el
sustento para la programación en MatLab.
Estos ficheros pueden crearse y/o modificarse
con un editor de textos cualquiera aunque si
trabajamos con MatLab lo mejor sería utilizar
su propio editor de textos, que es a su vez
debugger.
170
Los scripts y las funciones

Existen dos tipos de ficheros *.m, los


ficheros de comandos (scripts) y las
funciones.

- script solicitud
- function

ejecución
171
El editor-debugger

172
Las funciones

La implementación de funciones amplía


grandemente el horizonte de posibilidades
de MatLab.
Al igual que en otros lenguajes estas
cuentan con el nombre, sus argumentos y
sus valores de retorno.

173
Las funciones

Declaración:
function [var-sal] = nombre(<argumentos>)

Las funciones definidas en ficheros *.m se


caracterizan porque la primera línea (no
comentariada) comienza por la palabra
function. 174
Las funciones
Ejemplo:

175
Los breakpoints

Colocación de los breakpoits

176
Los breakpoints

Observación 1

177
Los breakpoints

Observación 2: Breakpoint condicionales

178
Bibliografía

1. Aprenda Matlab 7.0 como si


estuviera en primero
2. La ayuda de Matlab 7.0
3. Ver en la sección “demos” de la
ayuda de Matlab:
• “Programming”
• “New Features in Version 7” (3er
video) 179
Orientaciones para Estudio
• Aprenda Matlab 7.0 como si estuviera en primero
• Ayuda de Matlab 7.0
• Sección “demos” de la ayuda de Matlab
• Ver presentaciones: 6869 Matlab Tutorial.ppt e
Introduction to MATLAB.ppt
• Laboratorios: dsplab0, dsplab1

PDS - Intro. MATLAB. 180

También podría gustarte