Anda di halaman 1dari 21

PRACTICAS

DE

SSD

CURSO 2003/2004

Grupo de Teor a do Sinal Dpto. Teor a do Sinal e Comunicaci ons Universidade de Vigo

PROLOGO
La clase pr actica de la asignatura Sinais e Sistemas Discretos se concibe como un entorno en el que se espera que el/la alumno/a sea capaz de asimilar nuevos conceptos, al igual que ocurre en la clase te orica, pero con ayuda de herramientas adicionales como el ordenador en este caso. La asistencia no se regular a, aunque un porcentaje de la nota nal puede ser opcionalmente conseguido en las clases pr acticas mediante dos ejercicios puntuables que se realizar an en su momento. Tambi en mediante la realizaci on de un proyecto optativo que se repartir a a lo largo del curso se podr a conseguir otro punto sumable a la nota de teor a del examen. Se recomienda la preparaci on previa de cada sesi on de trabajo, ya que adem as de estar en mejores condiciones de realizar los ejercicios, el aprovechamiento de la clase ser a mucho mayor con un peque no esfuerzo previo. Las principales referencias de inter es, adem as de los libros existentes sobre procesado digital de se nal, son el manual (help en l nea) del Matlab, el manual de Octave [?], y el libro de Burrus et al. [?], que contiene numerosos ejercicios de procesado digital de se nal para Matlab, y que pueden ser utilizados tambi en sobre Octave. La nota nal nf de la asignatura se calcular a en base a la nota conseguida en el examen nal (nt, hasta un m aximo de 10 puntos), los puntos conseguidos en los ejercicios puntuables (np, hasta un m aximo de 2 puntos), y el punto conseguido con el proyecto npro, de la siguiente forma: nf = npro + np + nt(10 np)/10 con lo que la nota conseguida en las clases pr acticas y el proyecto siempre ayuda a mejorar la nota nal. Nota: La f ormula anterior se aplicar a en las convocatorias de Junio y Septiembre. La nota de la convocatoria de Diciembre se basar a exclusivamente en la nota conseguida en el examen escrito.

ii

1 Introducci on al entorno de trabajo


1.1 Resumen
El paquete matem atico Matlab ser a el empleado a lo largo de las clases pr acticas de la asignatura. Con el mismo se podr an llevar a cabo la totalidad de las t ecnicas de procesado digital de se nal aprendidas durante este curso. Su prop osito u ltimo es el hacer posible el adquirir los conceptos de forma pr actica, complementando de esta forma las explicaciones te oricas, tambi en necesarias. Existen m ultiples textos que explican procesado de sen al utilizando Matlab con lo que es f acil ampliar o completar los conocimientos adquiridos en esta asignatura y estas pr acticas acudiendo a ellos. Para los que quieren practicar en casa tambi en se puede utilizar el paquete matem atico Octave, de libre distribuci on para muchos de los entornos Linux y, en una versi on m as simple, tambi en para Windows. En los manuales de prcticas se indicar an tambi en los peque nos cambios a realizar en el c odigo si se utiliza Octave en lugar de Matlab. Objetivo: Familiarizarse con el entorno de ventanas del PC, el sistema operativo Linux, y el programa que se emplear a a lo largo del curso: Matlab. Esta pr actica ha de guardarse como gu a de usuario para posibles dudas que puedan surgir durante el curso. Duraci on: Una sesi on.

1.2 Familiariz andose con el PC


1.2.1 Entrando y saliendo de la cuenta de trabajo
SISTEMA OPERATIVO. El sistema operativo elegido para trabajar en estas pr acticas es LINUX. CUENTA. Para entrar en el sistema hace falta una cuenta, que consiste en una porci on de disco en la cual pueden escribir, borrar, etc. Dicha cuenta tiene un nombre (login), que gen ericamente es de la forma ssd#, en donde # ser a el n umero del PC que se est a usando. Los archivos que se graben en la cuenta deber an ser volcados a un diskete ya que estas se borrar an al nalizar el d a. Las cuentas pueden tener una clave (o password) pero en esta asignatura no utilizaremos ninguna ya que cada cuenta se comparte por varios alumnos. ENTORNO DE VENTANAS Es un entorno que permite varias pantallas (o workspaces), y varias ventanas dentro de cada pantalla. Estas ventanas pueden ser aplicaciones concretas o terminales para introducir comandos de LINUX (o xterm). Para abrir un

1.2.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION xterm se pulsa el bot on derecho del rat on y se selecciona en el men u la opci on xshell. M as adelante se explican algunos comandos del sistema operativo. Con el rat on se pueden mover las ventanas de un lado a otro pulsando con el bot on izquierdo sobre el marco. Para introducir ordenes en el sistema operativo, basta con activar la ventana pulsando en el marco ( o situ andose sobre ella un momento).

DE TRABAJO COMO TERMINAR LA SESION Con el bot on derecho del rat on abrir el men u y seleccionar: WindowManagers, exit y contestar armativamente a la pregunta sobre salir de la sesi on. IMPORTANTE: Si el ordenador va a ser apagado f sicamente, hay que efectuar CtrlAlt-Del cuando aparezca la petici on de login, y esperar a que aparezca la l nea LILO boot antes de pulsar el interruptor de apagado.

1.2.2 Comandos b asicos del sistema operativo


cd: para cambiar de directorio. ls: muestra los cheros contenidos en el directorio actual. pwd: indica el directorio actual. more nombre: nos muestra el contenido del chero nombre. cp nombre1 nombre2: copia el chero nombre1 en nombre2. mv nombre1 nombre2: mueve el chero nombre1 a nombre2. rm nombre: borra el chero nombre. rmdir nombre: borra un directorio. Para practicar los comandos reci en vistos, copiar el chero /home/ssd00/.octaverc dentro del directorio raiz ( comprobar con pwd que realmente est ais en el directorio raiz), y con ls -al vericar que el chero ha sido copiado all . Nuevas ventanas: si se desea alguna ventana nueva, basta con apretar el bot on izquierdo del rat on fuera de las ventanas, y escoger la primera opci on (xterm). C omo guardar y leer cheros en diskette en formato DOS: Para grabar en diskette un chero de nombre name: ssd#[~]1: mcopy -t name a:/name Para leer de diskette un chero de nombre name: ssd#[~]1: mread -t a:/name name

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.3.

Por u ltimo, indicar que en el sistema operativo linux las may usculas se diferencian de las min usculas por lo que no es indiferente el uso que se haga de ambas tal y como ocurre en DOS.

1.3 Utilidades
1.3.1 Correo electr onico
En aquellas pr acticas que as lo indiquen, se podr an entregar ejercicios o enviar consultas al profesor por correo electr onico, utilizando el programa elm, al que se accede a trav es del men u de aplicaciones (Apps) o desde la linea de comandos de una ventana xterm.

1.3.2 Matlab/Octave
Matlab (y la versi on de libre distribuci on Octave) es un entorno software orientado a c alculos num ericos y a visualizaci on de resultados. Las principales ventajas de Matlab pueden resumirse en: C alculos matem aticos interactivos. Gr acas integradas. Programaci on sencilla. Entorno consistente con numerosas funciones propias. De esta manera, el alumno se centra en la resoluci on de los problemas sin sumergirse en las cuestiones de la programaci on. Para iniciar una sesi on de Matlab no hay m as que escribir Matlab en una ventana de comandos y ya se abre todo el entorno de ventanas propio de la aplicaci on. Si no se desea utilizar el entorno de ventanas (tarda un poco en arrancar y, a veces, no compensa) se puede llamar al matlab con la opci on -nojvm, que signica no-java-virtualmachine. Para iniciar una sesi on de Octave, la llamada ser a octave desde una ventana de comandos. En este caso no se abre ning un entorno de ventanas nuevo, sino que Octave utiliza la propia ventana de comandos de Linux/Windows. Cuando se teclee una expresi on que Matlab/Octave entienda , se efectuar an las tareas apropiadas. En otro caso, informar a del error cometido en la expresi on. Para cerrar la aplicaci on Matlab/Octave, simplemente se teclea el comando quit o exit (intentarlo). A partir de este momento, y para el resto del curso, s olo aludiremos al programa Matlab, entendiendo que en Octave ser a exactamente lo mismo. En los casos en que haya alguna diferencia se escribir a expresamente. Las declaraciones en Matlab pueden ser:

1.4.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION >> variable = expresion (o bien) >> expresion donde los nombres de las variables y funciones comienzan por una letra a la que pueden seguir letras o d gitos.

Matlab tiene cheros de ayuda a los que se puede acudir en el propio entorno de ventanas del Matlab para buscar comandos. Tambi en existe un manual de Octave [?] que recoge una descripci on detallada de todos sus comandos (los que vamos a utilizar en esta clase son casi todos iguales a los de Matlab).

1.4 Introducci on a Matlab


1.4.1 Matlab como una calculadora
Matlab tambi en puede operar como una calculadora. sencillas como: >> >> >> >> >> 2 + 2 2 * 3 3 / 5 2 ^ 8 (3 + 5) * 8 Comprobarlo mediante operaciones

(Observar el comportamiento de los par entesis.) Si el PC no admite el s mboloutilizar .

1.4.2 Generaci on de Matrices


Los datos num ericos con los que trabaja Matlab son de tipo matricial N x M, de tal manera que los escalares los considera matrices 1 x 1 ; los vectores de tipo la son matrices 1 x M y los vectores de tipo columna son matrices N x 1. Existen cuatro maneras de generar una matriz: 1. Mediante declaraciones y funciones propias. 2. Creadas en un chero xxx.m 3. Cargadas desde cheros externos de datos. 4. Mediante declaraci on expl cita de todos sus elementos. Veamos un ejemplo del caso 4. Para ello, teclear: >> A = [ 1 2 3; 4 5 6];

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION Teclear ahora simplemente: >> A

1.4.

Observar que al introducir los elementos de una matriz hay que delimitarlos mediante corchetes; los elementos de una la se separan mediante espacios en blanco o comas; las diferentes las se separan mediante punto y coma. Probar ahora con algunas funciones propias de Matlab, como: >> >> >> size(A) who whos

El comando who muestra las variables almacenadas en el workspace de Matlab. Como se puede apreciar, la matriz A est a almacenada en el workspace para futuras operaciones con ella. Las variables presentes en el worjspace tambin se pueden visualizar pulsando la pesta na Workspace del entorno de ventanas propio de Matlab. Si se desea conocer el comportamiento de alguna funci on propia de Matlab, se dispone de un comando muy u til, help . Probar, por ejemplo: >> >> help size help whos

O simplemente: >> help

En este u ltimo caso, Matlab muestra los operadores que utiliza as como la gran cantidad de funciones propias a las que tiene acceso para operar con ellas ordenadas por grupos anes (o toolboxes). Si se desea conocer el valor del elemento situado en la primera la y segunda columna de la matriz A , teclear: >> A(1,2)

O bien, si se desea acceder a todos los elementos de la primera la: >> A(1,:)

Tambi en se puede acceder a todos los de la segunda columna y asignarlos a un nuevo vector a: >> a = A(:,2)

Probar con el comando who ahora. Observar que Octave diferencia las letras may usculas y las min usculas. Emplear ahora el comando size para conocer las dimensiones de a. Es un vector columna, con lo que una de sus dimensiones es uno. Para vectores (la o columna) se puede utilizar el comando length, que nos indica su longitud:

1.4. >> length(a)

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

Tener en cuenta que para acceder a los elementos de un vector (o matriz) hay que usar par entesis mientras que para generar un vector (o matriz) hay que usar corchetes. Se pueden construir nuevas matrices a nadiendo las o columnas a alguna matriz existente. Probar lo siguiente: >> >> p = [7 8 9] P = [A;p]

O bien, sustraer una parte de una matriz para formar una nueva: >> Q = P(:, 2:3)

Qu e parte ha seleccionado? Si en este momento se introduce el comando who aparecer an todas las variables generadas hasta el momento (probarlo). Para borrar del workspace alguna de ellas probar con una declaraci on del tipo: >> >> clear p Q who

Qu e ocurrir a si se teclea clear sin ning un argumento? No hacerlo, puesto que se necesitar an esas variables para continuar con la pr actica; el comando help dar a la soluci on.

1.4.3 Expresiones aritm eticas matriciales


Trasposici on El operador para efectuar la trasposici on matricial es el s mbolo . Evaluemos una nueva matriz B , traspuesta de A y un vector b traspuesto de a : >> >> >> >> >> A = [1 2 -1; 4 0 2; 2 1 -2]; B = A size(B) b = a size(b) se crear a la matriz o vector

Si la matriz o vector es de tipo complejo, con el s mbolo traspuesto conjugado.

Adici on y Sustracci on Los operadores para sumar y restar son los s mbolos + y - . Octave efectuar a estas operaciones siempre que las matrices tengan las mismas dimensiones:

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION >> >> >> A + A b + b A + B

1.4.

Tambi en existe la posibilidad de sumar un escalar a todos los elementos de una matriz o vector: >> >> C = A + 20.456 c = a - 1.5

Multiplicaci on El operador para multiplicar es el s mbolo * . Matlab efectuar a esta operaci on siempre que las matrices sean compatibles. >> >> >> >> >> >> D = A * size(D) E = B * size(E) d = a * e = b * B A b a

Tambi en podemos efectuar el producto escalar entre dos vectores de las mismas dimensiones como a y c : >> a*c

Como se observa, el resultado es un escalar, ya que en este caso a y c son columnas. Si fuesen las, ser a de la forma a c . Tambi en podemos efectuar el producto de un escalar por todos los elementos de una matriz o de un vector: >> >> 3.5 * a -sqrt(2) * A

Divisi on Existen dos tipos de divisi on en Matlab, hacia la derecha ( s mbolo /) y hacia la izquierda (s mbolo \). Si deseamos resolver el sistema matricial X * A = E , nuestra expresi on ser a: >> X = E / A

Esta expresi on es equivalente a efectuar X = E * inv(A) . Pero si el sistema que deseamos resolver es A * X = C , deberemos efectuar una divisi on a la izquierda: >> X = A \ C

1.4.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

Esta expresi on es equivalente a X = inv (A) C . Si trabajamos con escalares, tenemos que 1/4 = 4\1 (comprobar). Potencia El s mbolo para efectuar potencias es . En el caso de no disponer de este s mbolo en el teclado se puede utilizar en su lugar. La expresi on A k se efectuar a siempre que A sea una matriz cuadrada y k un escalar: >> o >> D ** 2 D ^ 2

1.4.4 Operaciones elemento a elemento


Estas operaciones juegan un papel MUY importante en el procesado de se nales discretas como veremos a lo largo del curso. Con un punto precediendo a los operadores del producto (.*), de las divisiones (./ .\) y de la potencia (. ) estas operaciones se llevar an a cabo elemento a elemento. Introducir los nuevos vectores x e y y observar los siguientes resultados: >> >> >> >> >> >> >> x = [ 1 2 3]; y = [ 4 5 6]; x.*y x.\y x.^y x.^2 2 .^ x

1.4.5 Variables especiales y Operaciones con n umeros complejos


Octave dispone de una serie de variables muy u tiles para operaciones aritm eticas: pi, Inf, NaN , eps, i, j . Probar las siguientes expresiones: >> >> >> >> pi eps i j

El signicado de la variable NaN es Not a Number. La variable eps muestra la resoluci on num erica de Matlab. Mientras que las variables i y j toman por defecto el valor de sqrt(-1).

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.4.

1.4.6 Operaciones con n umeros complejos


Los n umeros complejos est an permitidos en todas las operaciones y funciones de Matlab. Probar en Matlab expresiones del tipo: >> >> >> x = 2+i*3 2+j*3 X = [1 2; 3 4]+i*[5 6; 7 8]

Nota: Los valores de i y de j pueden ser redenidos, aunque en ese momento perder an su condici on de sqrt(-1). Adem as, el valor sqrt(-1) puede ser reasignado a otra variable: >> >> jj = sqrt(-1) x = 2+jj*3

1.4.7 Comandos de LINUX desde Matlab


Desde Matlab se puede acceder a algunos comandos del sistema operativo LINUX: >> >> >> pwd ls cd ..

El comando pwd indica el path completo del directorio actual de trabajo; ls muestra un listado de todos los cheros de ese directorio de trabajo; nalmente, cd .. cambia al directorio inmediatamente superior al actual (o a otro cualquiera que se especique en lugar de los dos puntos). Hay que tener en cuenta que el grabado y lectura de cheros se realizar a en Matlab sobre el directorio actual, que ser a aquel desde el que se ha invocado Matlab si no se ha hecho ninguna operaci on de cambio de directorio dentro de Matlab.

1.4.8 Salvado del workspace de Matlab


Para grabar los resultados de una sesi on de trabajo, as como los comandos introducidos en Matlab, se utiliza el comando save (hacer un help de save ). Probar una declaraci on de este tipo: >> >> >> save mat1 A B a b save mat2 C D x y clear

IMPORTANTE: Comprobar con pwd el directorio de trabajo siempre que las cosas no funcionen como deber an a la hora de cargar o salvar cheros. Los cheros de datos en Matlab tienen extensi on .maty son archivos binarios comprimidos; sin embargo en Octave tienen extensi on .octy son archivos de texto. Con el comando clear se han borrado todas las variables del workspace (probar con who ). Pero en los cheros mat1.mat (mat1.oct) y mat2.mat (mat2.oct) del disco duro se encuentran almacenadas algunas de las variables que hab an sido generadas (hacer ls para listar los cheros del directorio en el disco duro). Ahora se puede nalizar la sesi on de Matlab (quit ) sin perder esos valores. Para recuperar esas variables hay que usar el comando load :

1.4. >> >> >> >> load mat1 who load mat2 who

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.4.9 Operador : (dos puntos)


El operador : (dos puntos) en Matlab merece un ep grafe especial puesto que simplica muchas expresiones y elimina bucles de declaraciones innecesarias. Este operador es extremadamente u til en la programaci on de funciones de procesado de se nal. Una manera sencilla de generar un vector con los n umeros enteros de 1 a 100 es la siguiente: >> x = 1:100

Si dese aramos generar un vector similar pero s olo con los n umeros pares: >> y = 2:2:100

Tambi en podemos trabajar con incrementos no enteros o negativos: >> >> z = 0:pi/8:pi u = 10:-1:-5;

Observar que al nalizar una expresi on con un punto y coma el resultado no aparece en pantalla. Matlab ejecuta la declaraci on en modo ciego. En general, la expresi on j : k es equivalente a [j, j + 1, j + 2, ..., k ] ; si k < j el resultado es una matriz vac a, de dimensiones 0x0; la expresi on j : i : k es equivalente a [j, j + i, j + 2i, ..., k ]. Como ya se ha visto anteriormente, el operador : (dos puntos) puede tambi en ser usado para seleccionar partes de una matriz. >> b = A(:,1)

1.4.10 Matrices u tiles


Matlab permite trabajar con matrices vac as, de dimensionse 0x0, que se emplean en inicializaciones de algoritmos: >> >> x = [] size(x)

Adem as, Matlab permite generar las siguientes matrices: zeros, ones, eye, diag, triu, tril, toeplitz, rand cuyas caracter sticas se pueden conocer con help.

10

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.4.

1.4.11 Funciones matem aticas


Elemento a elemento Matlab dispone de las siguientes funciones cuyo argumento puede ser escalar, vector o matriz, efectu andose la funci on elemento a elemento: sin, cos, tan, asin, acos, atan, exp, log log10, abs, sqrt, sign , rem, round, oor, ceil Operaci on por columnas Otras funciones matem aticas que al ser aplicadas a matrices operan por columnas son: max, min, mean , median, std, sum, prod, sort, any, all Generar una matriz para probar el comportamiento de alguna de estas funciones.

1.4.12 Operadores relacionales y l ogicos


Matlab dispone de los siguientes operadores relacionales: < menor que <= menor o igual que > mayor que >= mayor o igual que == igual = no igual Si la expresi on relacional es cierta, el resultado de Matlab es 1 ; si es falsa, el resultado es 0 . Los operadores l ogicos son los siguientes: & (AND), | (OR), (NOT). Probar alguna expresi on relacional del tipo: >> >> 2 +2 == 4 56.2 ~= 56.2

1.4.13 El comando nd
El comando nd se utilizar a a menudo a lo largo de las pr acticas de SSD para encontrar los ndices de una secuencia que satisfacen una condici on booleana. Por ejemplo, vamos a utilizar el comando nd para averiguar la posici on en la que se encuentra el m aximo valor de un vector: Crear con Octave el vector >> x=[1 2 4 -1 8];

Para ello, tener en cuenta que >> b=find(a)

devuelve en b las posiciones de los elementos diferentes de cero de a. Por lo tanto, el siguiente comando: >> y=find(x>=max(x))

qu e valor devolver a en y ? Comparar con el resultado obtenido al efectuar >> [maximo,y] = max(x);

11

1.4.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.4.14 Gr acas
La visualizaci on de resultados es una ayuda fundamental en muchos problemas relacionados con el procesado de se nal. El comando principal de Matlab para realizar gr acas es plot . Realicemos un ejemplo de algunas utilidades gr acas: >> >> >> eje = -2*pi : .05 : 2*pi; x = sin(eje); plot(x)

Observar el eje horizontal de esta gr aca: no coincide con el aut entico rango de valores. Probemos ahora: >> plot(eje,x)

A esta gr aca se le puede a nadir enrejillado, t tulo, etiquetado de los ejes: >> >> >> >> grid title(Funcion sin) xlabel(tiempo) ylabel(amplitud)

Nota: En Octave hace falta un comando adicional para representar las etiquetas de los ejes sobre un gr aco que ya est a en pantalla: >> replot Existen otras numerosas opciones (help plot ) como: semilogx, semilogy, loglog, polar, mesh.... Adem as, mediante el comando hold podemos conservar una gr aca en pantalla para visualizar en la misma pantalla un vector diferente: >> >> >> hold y = sin(eje + 0.25); plot(eje,y)

Tecleando nuevamente hold , la gr aca actual s olo se mantendr a en pantalla hasta un nuevo comando plot . El comando hold on asegura la activaci on del hold y el comando hold o asegura la desactivaci on. Tambi en es posible visualizar varias gr acas simult aneamente. Para ello hay que utilizar el comando gure: >> >> >> figure(1) y = sin(eje + 0.25); plot(eje,y)

En este caso aparece una nueva ventana que muestra la gr aca anterior. Para conmutar entre las distintas gr acas hay que utilizar asimismo gure (o seleccionar la gura con el rat on): >> figure(0)

12

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

1.4.

Esta instrucci on activa de nuevo la primera ventana. Veamos ahora un ejemplo para dibujar gr acas en forma de secuencias, en concreto, una secuencia sinusoidal: >> >> >> n = 0 : 30; s = sin(n*pi/15); stem(n,s)

1.4.15 Comandos de control de ujo


Matlab dispone de los comandos m as usados por los lenguajes de alto nivel para controlar el ujo de las operaciones, aunque se recomiendo no abusar de los bucles ya que estamos ante un lenguaje interpretado y esto ralentiza mucho los procesos. Es conveniente aprender a buscar una soluci on de programaci on alternativa manejando inteligentemente las operaciones vectoriales. Veremos algunos ejemplos.. Bucles for, endfor Con este comando pueden repetirse una declaraci on o grupo de declaraciones el n umero de veces que deseemos. Probemos el siguiente ejemplo: >> for i = 1 : 10 > p(i) = i^ 2; > end (Nota: en Octave el comando es endfor) La anterior expresi on es equivalente a x = (1 : 10) .^ 2 Bucles while endwhile Con este bucle un conjunto de declaraciones pueden repetirse un n umero indeterminado de veces hasta que se cumpla una cierta condici on relacional. Probemos el siguiente ejemplo: >> n = 0; >> a = 500; >> while 2^n < a > n = n + 1; > end (Nota: en Octave el comando es endwhile)

Qu e hace este bucle? Cu al es el valor de n al terminar el bucle? Bucles if else endif El siguiente ejemplo calcula la inversa de una matriz en el caso de que esta sea cuadrada. Denir una matriz A antes de realizar el ejemplo:

13

1.4.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

>> tamano = size(A); >> if tamano(1) == tamano(2) > inversa = inv(A) > elseif tamano(1) > tamano(2) > disp(A tiene mas filas que columnas) > else > disp(A tiene mas columnas que filas) > end (Nota: en Octave el comando es endif)

1.4.16 Generaci on de cheros xxx.m


Los cheros .m son cheros de texto que contienen declaraciones de Matlab. En lugar de escribir comandos l nea tras l nea, es posible escribir cheros de texto usando un editor de textos como xedit o el propio editor integrado en el paquete Matlab. IMPORTANTE: En caso de usarse un editor de textos externo a nuestra aplicaci on ha de ser llamado desde la l nea de comandos del sistema operativo. Existen dos tipos de cheros .m: Ficheros de tipo script Son cheros que contienen secuencias de comandos. Matlab ejecuta estos cheros como si los comandos aparecieran l nea tras l nea en la ventana de ejecuci on. Crear un chero llamado data.m que contenga las siguientes l neas: # A 5 9 Generacion de la matriz A = [ 1 2 3 4 6 7 8 10 11 12]; Grabar data.m y desde Matlab teclear: >> >> >> data whos A

Ficheros de funciones .m Crear un chero media.m con las siguientes l neas: function [y,l] = media(x) # Calculo de la media longitud = length(x); l=longitud; y = sum(x) / longitud; En Octave las funciones se terminan con el comando: endfunction

14

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION Ahora llamar a esa funci on desde Matlab: >> >> vector = 1:29; [y,l]=media(vector);

1.5.

Examinemos el contenido del chero media.m : La primera l nea de una funci on .m siempre empieza con la palabra function, seguida de la/s variable/s que devuelve (si son m as de una, deben ir separadas por comas y delimitadas por corchetes); a continuaci on aparece el nombre de la funci on y entre par entesis la lista de argumentos de entrada a la funci on separados por comas. El nombre del chero ha de coincidir con el nombre de la funci on que contiene, seguido de .m. Tras esta l nea vienen los comentarios explicativos de la funci on. Estas l neas vienen precedidas por el s mbolo #. Cuando se teclea un help de la funci on, en pantalla aparecer an estos comentarios. Las variables internas de la funci on (longitud en este caso) son locales y no existir an en el workspace cuando el comando media haya nalizado. A la hora de devolver los resultados al cuerpo principal hay que asignar la salida de la funci on a las variables en las que queremos poner dicha salida, tal y como se muestra en la llamada a la funci on. Observaciones importantes Evitar el uso de los bucles de tipo for . Son inecientes en Matlab porque es un lenguaje interpretado, con lo que no se debe programar en Matlab de la misma manera que en C o FORTRAN. Los bucles s olo han de ser usados como u ltimo recurso. As , por ejemplo: >> for i = 1 : 20 a(i) = i; endfor

Es equivalente a la expresi on: a = 1 : 20 ; . Documentar las funciones .m Las l neas de comentarios al principio de cualquier funci on se usan como help de dicha funci on. Hay que procurar comentar el funcionamiento de la funci on, as como los argumentos de entrada y salida que emplea. Aquellas funciones que se utilicen han de estar en el mismo directorio en el que se est a trabajando con Matlab, a no ser que haya un path espec co a donde se encuentran.

1.5 Ejercicio recopilatorio


En este ejercicio revisaremos algunos de los aspectos estudiados en esta pr actica, a n de aanzarlos y evitar t picos errores en las siguientes pr acticas. 1. Crear un directorio de nombre Practica1

15

1.6.

AL ENTORNO DE TRABAJO PRACTICA 1. INTRODUCCION

2. Dentro del directorio practica1, crear con el editor un chero de nombre maximo.m, que contenga la funci on maximo que devuelve la posici on del m aximo valor dentro de un vector, utilizando para ello el comando nd. 3. Guardar el chero maximo.m en un diskete. 4. Borrar todas las variables del workspace de Matlab y a continuaci on crear un vector aleatorio y calcular su m aximo con la funci on maximo reci en guardada. 5. Borrar el directorio de trabajo.

1.6 Dudas m as comunes


P: Matlab muestra un vector de grandes dimensiones por p aginas, y quiero que devuelva el control sin necesidad de ver toda la secuencia num erica. R: Teclear q (de quit). P: No me responde la l nea de comandos. Todas las ordenes que escribo quedan impresas, pero no hay respuesta. R: Hay un programa en ejecuci on, que no est a en modo background. Para obtener de nuevo el control de la l nea de comandos, teclear Control-Z, y a continuaci on, bg (de background). P: Al ejecutar una orden en Octave obtengo como respuesta varias l neas de errores. R: Es s olo un error (puede haber m as, pero Octave se detiene con el primero que detecta). Las sucesivas l neas muestran los distintos ambitos a los que pertenece el error. P: No soy capaz de cargar un programa (xedit, elm, etc). R: Es probable que lo est es intentando desde Octave, o desde una ventana en la que se ha llamado a un programa previamente. Abrir una ventana nueva es una soluci on.

16

Bibliograf a
[1] C. Burrus, J. McClelland, A. Oppenheim, T. Parks, R. Schafer, and H. Scuessler, editors. Computer-based exercises for Signal Processing using MATLAB. Prentice-Hall, 1994. [2] John Eaton. Octave Documentation. GNU, 1997 (En fotocopiadora). [3] A.V. Oppenheim and R.W. Schafer. Discrete-Time Signal Processing. Prentice-Hall, 1989. [4] A.V. Oppenheim, A.S. Willsky, and I.T. Young. Signals and Systems. Prentice-Hall, 1983.

17

Anda mungkin juga menyukai