introducción a gnu octave -...

13
30 de abril de 2013 Introducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de seminarios introductorios 1

Upload: others

Post on 10-Jun-2020

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

30 de abril de 2013

Introducción a GNU Octave

Segunda parte

Laboratorio Abierto de Electrónica - Ciclo de seminarios introductorios

1

Page 2: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

Índice1. Gráficos 3

1.1. Funciones básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2. Manipulando ventana de gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2. Gráficos con formato 52.1. El comando figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2. El comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3. El comando axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.4. El comando title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.5. Los comandos xlabel e ylabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.6. El comando hold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.7. El comando grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.8. El comando box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.9. El comando legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.10. El comando close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.11. Tipos de trazo y colores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.12. Uniendo formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3. Gráficos 3D 83.1. El comando mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2. El comando meshgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.3. El comando meshc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4. Generalidades de la programación en Octave 9

5. Control de flujo de programa 105.1. Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Sentencia if - else - else if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105.2. Bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Sentencia While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Sentencia For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.3. Control de flujo en bucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12El comando pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12El comando fflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13El comando break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Los comandos tic y toc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

Página 2

Page 3: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

1. Gráficos

1.1. Funciones básicasPara graficar disponemos de dos funciones; plot() y stem(). La primera lo hace con trazo “continuo”

(que no es más que una interpolación del conjunto de puntos que define a la curva), mientras que la segundagráfica en forma discreta los puntos de la curva. Recordemos que Octave internamente procesa todas lasfunciones o curvas en un conjunto de valores que de alguna forma definimos nosotros. Luego, la represen-tación que elijamos dependerá de lo que se quiera mostrar.

Si estas funciones se utilizan recibiendo como argumento tan solo el vector que desea visualizarse, loque obtenemos luego de la ejecución es un gráfico con ejes cuya escala se ajusta automáticamente tomandocomo referencia todos los puntos disponibles. A su vez, no tenemos información sobre lo que representacada eje, ni sobre lo que representa la o las curva/s graficada/s. Para poder exhibir toda esta informaciónadicional y/o ajustar escalas, dar formato, etc. se cuenta con un conjunto de herramientas que van desde ar-gumentos opcionales de las funciones presentadas en esta sección, como así también comandos y funcionesextras, que cumplen tareas específicas. Las mismas se presentan en la sección siguiente.

Figura 1: Gráfico sin formato usando plot()

Página 3

Page 4: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

Figura 2: Gráfico sin formato usando stem()

Las invocaciones de argumento único del comando plot y del comando stem se muestran a continuacióny corresponden a las figuras anteriores:

>> plot(curva)>> stem(curva)

Si queremos en cambio graficar solo para un rango de valores, podemos modificar la forma en queusamos las funciones plot() y stem(), pasando como primer argumento el vector de valores respecto del cualqueremos representar la curva o función evaluada.

>> plot(INICIAL:FINAL, curva)>> stem(INICIAL:FINAL, curva)

1.2. Manipulando ventana de gráficosSi bien la interfaz no es muy intuitiva al respecto, es posible tener control sobre la figura que despliega

el gráfico generado. Lo más importante de esta funcionalidad es la posibilidad de hacer zoom. Esto lollevamos a cabo clickeando el botón derecho del mouse sobre alguna zona del gráfico, y arrastrando elmouse delimitando una región. Luego volviendo a hacer click lo que observamos es la región delimitada,ampliada.

Asimismo se pueden utilizar comandos de teclado para manejar otras funciones relacionadas. Los máscomunes son “p”, vuelve al zoom anterior, “n” va al zoom próximo, “e” redibuja el gráfico, y el botóncentral del mouse marca sobre el gráfico las coordenadas del punto en el que nos encontramos.

Se puede acceder a una lista completa de todos los comandos disponibles para el control de una ventanade gráficos. Para esto se debe presionar la tecla “h” luego de haber generado la gráfica, y sin cerrar laventana que la contiene. La lista se despliega en el intérprete de Octave.

Página 4

Page 5: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

2. Gráficos con formatoEn la sección anterior se presentaron los comandos básicos para graficar funciones. Sin embargo Octave

brinda una serie de comandos que permiten modificar la apariencia de los gráficos. Se puede por ejemplodefinir los ejes, cambiar el color y el tipo de trazo de cada función graficada, agregar nombre a los ejes,establecer una referencia para indicar qué representa cada función graficada, entre muchas otras funciones.

Nota: Todos los comandos que se listan a continuación son opcionales y al incluirse secuencialmenteactúan sobre la última figura que se haya declarado. Además, si bien se ejemplificarán para el comandoplot, funcionan en forma análoga con stem.

2.1. El comando figureCuando se genera un gráfico el mismo se despliega sobre un objeto que se denomina Figure. Si queremos

graficar distintas cosas y poder verlas todas a la vez por separado, necesitamos definir una figura por cadagráfico porque de lo contrario el nuevo gráfico se genera sobre el anterior, y solo vemos el último quehayamos ejecutado. Para esto debemos definir los gráficos de la siguiente forma:

>>figure(1); plot(grafico1);>>figure(2); plot(grafico2);

o bien,

>> figure; plot(grafico1);>> figure; plot(grafico2);

Ambos fragmentos de código hacen exactamente lo mismo.

2.2. El comando subplotEl comando subplot permite graficar varias curvas diferentes dentro de la misma “figura”, es decir en

una única ventana, pero dividiendo a la misma en tantos gráficos como filas y columnas pasemos comoargumento. Por ejemplo, si escribimos:

>>figure(1);>>subplot(3,2,1) #Subplot(FILAS, COLUMNAS, INDICE)>>plot(grafico1);

Tendremos una figura particionada de la forma; tres filas - dos columnas, y el gráfico 1 se mostrará enla partición 1. Es decir, lo veremos representado en el primero de todos los “casilleros” en los que se dividela figura.

2.3. El comando axisPara indicarle a Octave que el gráfico queremos realizarlo solo para un rango de valores de los ejes

definidos por nosotros, debemos utilizar el comando axis(). La forma de uso es:

>> axis([X_INICIAL X_FINAL Y_INICIAL Y_FINAL])

2.4. El comando titleUtilizando este comando agregamos título al gráfico:

>>title("Titulo")

Página 5

Page 6: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

2.5. Los comandos xlabel e ylabelUtilizando este comando se agregan nombres a los ejes:

>>xlabel("Eje X"); ylabel("Eje Y");

2.6. El comando holdCuando este comando está activo, las acciones que se realicen sobre la figura de gráfico se efectuarán

superpuestas. Su utilidad radica en que por cada comando agregado la figura no se vuelve a generar, comosí ocurre si se omite la mensión de este comando en el ámbito de la figura. Este comando es ejecutado de laforma hold on o bien hold off.

2.7. El comando gridEste comando ejecutado también de la forma grid on o bien grid off, activa o desactiva respectivamente

una grilla sobre el gráfico.

2.8. El comando boxEjecutado en forma equivalente a grid, es decir box on o bien box off, activa o desactiva respectivamente

el marco alrededor del gráfico, dejando solo visibles los ejes.

2.9. El comando legendPor otro lado, cuando se tiene más de una curva o función por gráfico, en general se indica a qué conjunto

de datos corresponde cada curva. Para eso se emplea el comando legend, de la siguiente forma:

>>legend("curva 1", "curva 2", "location", pos, "options",...)

2.10. El comando closeclose cierra la última figura abierta y si se lo invoca junto con el modificador all cierra todas las figuras.

2.11. Tipos de trazo y coloresLos gráficos en Octave admiten cambiar el tipo de trazo (’o’, ’x’, ’*’, ’-’, ’+’) y color (’b’, ’k’, ’c’,

’g’, ’y’, ’r’). También pueden cambiarse el tamaño de los markers con ’MarkerSize’ y el grosor del trazocontinuo con ’LineWidth’. La manera de indicar cada uno de estos parámetros al intérprete no es única. Esdecir, existen diferentes sintaxis que llevan a los mismos resultados.

plot(1:100,’r+’,’Markersize’,20,’LineWidth’,2)

2.12. Uniendo formatoFinalmente, si ponemos todos estos comandos en acción juntos, podemos obtener gráficos más perso-

nalizados y con información útil exhibida de forma clara:

Página 6

Page 7: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

Figura 3: Gráfico con formato

Figura 4: Gráficos múltiples con formato

Página 7

Page 8: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

3. Gráficos 3DEn las secciones anteriores vimos cómo generar gráficos sencillos, y cómo agregarles formato para

que fuese más claro visualizar la información, entre otras cosas. Sin embargo todos esos gráficos eranbidimensionales. En esta sección veremos cómo generar graficos con 3 dimensiones.

3.1. El comando meshTeniendo una superficie definida sobre un conjunto de puntos obtenidos de alguna forma, para graficar

esta superficie utilizamos mesh(z), donde z es la función dependiente del par de variables que definen cadapunto del espacio, digamos x e y .

Luego, de ejecutar :

>> mesh(z)

Obtenemos:

Figura 5: Gráfico 3D de un paraboloide

3.2. El comando meshgridPero a la hora de generar un gráfico en tres dimensiones, lo que necesitamos vectorialmente hablando,

es una matriz que represente el valor de la función para cada par de puntos. Es decir, si tenemos unafunción z(x, y), para Octave, z es una matriz que en cada una de sus componentes tiene el valor de unpar de puntos (x, y). Pero en general puede ocurrir que tengamos definidos vectores x e y sobre los quepretendamos obtener una cierta función de esas variables. Supongamos la función del ejemplo anterior:z(x, y) = x2 + y2. El problema es que si definiéramos z de esta forma, obtendríamos un vector en lugar deuna matriz, y el gráfico sería de la forma:

Página 8

Page 9: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

Figura 6: Gráfico 3D de un parábola en tres ejes coordenados

Para evitar esto y tener un gráfico como el de la primer figura, lo que debemos hacer es usar la funciónmeshgrid(), que recibe un vector por cada una de las variables independientes, en este caso x e y, y devuelveuna matriz por cada uno de estos vectores, que facilita la representación de z(x, y). Si no tuviéramos lafunción. Luego, la figura 5 responde al siguiente código:

>>z = zeros(N,M);>>[X Y] = meshgrid(x, y);>>z = X.^2 + Y.^2;>>mesh(X,Y,z);

3.3. El comando meshcPor último, existe un tercer comando que realiza la misma función que mesh llamado meshc, y que

además de graficar la superficie grafica sus curvas de nivel proyectadas en el plano.

4. Generalidades de la programación en OctaveA diferencia de otros lenguajes, en Octave no hay que agregar bibliotecas a nuestro código, ni definir (a

menos que lo deseemos por alguna razón en particular que veremos más adelante) nada en archivos externosal que contendrá nuestro código. Tampoco hará falta definir ninguna clase de header o encabezado, comoocurre a veces, ni necesitamos instalar ninguna clase de compilador para poder ejecutar ese código. Recor-demos que Octave propone un lenguaje de scripting, el cual no se compila, sino que se va interpretandolínea a línea a medida que se van ejecutando.

Página 9

Page 10: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

5. Control de flujo de programaEmpezamos este curso diciendo que Octave era un programa de cálculo numérico, y que disponía de un

lenguaje de programación propio para llevar a cabo los distintos tipos de tareas que nos permite realizar. Sinembargo hasta el momento no hemos visto nada inherentemente orientado a programar. Solo nos dedicamosa definir variables de distintas características, y operar sobre ellas valiéndonos de un conjunto de funcionesde las que nos proveía el programa.

En esta sección y las siguientes empezaremos entonces a entender cómo funciona Octave cuando unodesea programar sus propios scripts en él . Para esto iremos describiendo en orden todas aquellas cosaspropias de cualquier lenguaje de programación indicando como se implementan dentro de Octave.

5.1. CondicionalesTodo lenguaje de programación (en particular aquellos procedurales) proporcionan alguna herramienta

para comparar elementos y tomar decisiones en función del resultado de la comparación. En general a estetipo de acciones que se toman en función de una comparación se conocen como “condicionale”, porquepermiten decidir en función de una condición.

Sentencia if - else - else if

Al igual que en muchos otros lenguajes, la sentencia if será en este caso la encargada de permitirnos“decidir” según una condición impuesta, si ejecutamos o no un fragmento de código. La misma se puedeacompañar además por su correspondiente else si resulta pertinente. Esto es, si se precisa un condicional pa-ra definir entre dos posibles bloques de código a ejecutar. Para realizar esto nos valdremos de los operadoreslógicos estudiados en la primer parte de este curso. La sintaxis es la siguiente:1

s = 6;

if s > 0 && s < 10if s == 5

disp("El número es 5.")else if s < 5

disp("El número es menor a 5.")else

disp("El número es mayor a 5.")endif

endifendif

Notar que no hay paréntesis ni ningún otro tipo carácter que encierre a la expresión de la condición. Enoctave los paréntesis son opcionales, como también lo es la coma luego de la expresión de la condición, yel indentado de los bloques de código es también opcional. Lo único que debe cumplirse es que los bloquescondicionales se finalizan con la palabra end. Algo para remarcar es que mientras que end funciona y escompatible con Matlab, en Octave puede utilizarse una versión modificada de end que es endif. Esto haceque sea más clara la lectura cuando hay muchos bloques anidados, y se vuelve complicado identificar dóndese cierra cada bloque. Ocurrirá algo similar con las demás construcciones que veremos en esta sección.

1Para los siguientes ejemplos vamos a asumir que trabajamos dentro de un archivo porque resulta más cómodo que hacerlodirectamente en el intérprete.

Página 10

Page 11: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

5.2. BuclesOtra herramienta necesaria en un lenguaje de programación convencional, es la posibilidad de iterar

sobre hasta que se verifique una determinada condición impuesta inicialmente. Para esto en Octave, dela misma forma que en muchos otros lenguajes, dispone de las sentencias while y for. Veremos entoncesalgunas formas de uso, y la sintaxis de las mismas.

Sentencia While

En esta sentencia se define una condición, y el código contenido dentro de ésta sentencia se ejecutatantas veces como tome cumplirse la condición. Como puede verse el funcionamiento es equivalente al decualquier otro lenguaje.

La forma en que se define un bloque while es muy similar a la definición de un if, excepto porque losbloques se finalizan con end o endwhile.

# Defino un vector de entrada que puede ser cualquier dato a procesarvector_entrada = [1 2 3 4 5 6 7 8 9];

# Guardo el largo del vector en una variable para iterar tantas veces# como posiciones ocupe el vector de entradaN = length(vector_entrada);

# Declaro un contador para corroborar la condición.# Hay que inicializar en 1 porque si se lo va a usar como índice de un# vector, no puede iniciar en 0

contador = 1;

# Declaro un vector nulo del largo del vector de entrada. Aqui voy a# almacenar el resultado del procesamientovector = zeros(N,1);

# Inicio del ciclo o bucle "while"while contador <= N

vector_salida(contador) = vector_entrada(contador) + contador;contador += 1;

endwhile

vector_salida

Es importante notar algo que hemos mencionado anteriormente respecto de la definición dinámica delos vectores. Si bien no haría falta definir el “vector_salida” con un largo fijo, en los casos en que se conoceel largo de la entrada de antemano, es preferible definir un vector vacío y luego completar cada posicióncon el nuevo valor, que declararlo con el valor de un única posición y agregarle elementos a medida que seitera sobre él. La razón es que Octave, al modificarse dinámicamente la longitud de un vector, lo mueve enmemoria a una nueva posición copiando todos sus elementos. Y esto es costoso en cuanto a procesamientoy tiempo de ejecución.

En general, while nos da la libertad de utilizar otro tipo de condiciones, no solo una variable contadora.Por ejemplo podría definirse que una variable que cambio su valor de cero a uno cuando se verifica unadeterminada condición. Pero eso tiene más que ver con la programación en sí misma, y no con el manejode Octave. Con lo cual no lo trataremos en este curso.

Página 11

Page 12: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

Sentencia For

Esta sentencia tiene características idénticas a nivel conceptual, que el while. La única diferencia realradica en cómo se trata a la condición. En este caso sí se está definiendo una condición de corte inhe-rentemente relacionada con cuántas veces se realiza una serie de acciones. La sintaxis nuevamente tieneparéntesis opcionales, indentado opcional y los bloques pueden finalizar con end o endfor. A continuaciónvemos un ejemplo que ilustra el uso de la sentencia:

# Defino un vector de entrada que puede ser cualquier dato a procesarvector_entrada = [1 2 3 4 5 6 7 8 9];

N = length(vector_entrada);

# Declaro un contador para corroborar la condicióncontador = 0;

# Declaro un vector nulo del largo del vector de entrada. Aqui voy a# almacenar el resultado del procesamientovector = zeros(N,1);

# Inicio del ciclo o bucle "for"

for contador = 1:Nvector_salida(contador) = vector_entrada(contador) + contador;

endfor

vector_salida

5.3. Control de flujo en buclesEl comando pause

En determinadas ocasiones nos interesará que las cosas ocurran en tiempos controlados. Esto es, pode-mos requerir que el código se ejecute a una velocidad menor a la inherente, dada por la computadora. Obien directamente esperar hasta recibir la instrucción del usuario para continuar con el avance de nuestroprograma.

Para ilustrar mejor estas situaciones, digamos primero que nuestro programa realiza primero la cargade una serie de datos, muestra los mismo por pantalla, y luego ejecuta una porción de código que muestraotra información en pantalla dejando fuera del marco de los límites de nuestro intérprete, la informaciónreferida a la carga de datos. En estas situaciones podemos “pausar” la ejecución luego de la carga de datos,corroborar que los mismos se cargaron correctamente, y recién en ese momento indicarle al programa quepuede continuar. El comando a utilizar se llama precisamente pause, y puede utilizarse sin argumentos,en cuyo caso impedirá que muestro código se ejecute hasta que presionemos una tecla. O puede utilizarserecibiendo como argumento el tiempo en segundos que quiere que se pause la ejecución.

# Cuando el programa ejecuta este línea, queda a la espera# de que se presione una tecla para continuar>> pause;

# El programa detiene su ejecución por 5 segundos>> pause(5);

Página 12

Page 13: Introducción a GNU Octave - LABIlabi.fi.uba.ar/sites/default/files/cursos/octave/octave2.pdfIntroducción a GNU Octave Segunda parte Laboratorio Abierto de Electrónica - Ciclo de

Curso Octave 2013 - Segunda parte LABI Cursos

El comando fflush

Una particularidad de los bucles o ciclos en Octave es que lo que ocurre durante la ejecución de losmismos no se muestra en el intérprete aunque dejemos las líneas sin “;”. Esto a veces es un problemaporque en general, cuando un bucle no termina nunca de ejecutarse, o nuestro código tiene algún problemade alguna índole, es una práctica común imprimir resultados parciales en pantalla para buscar el error.

Para el caso en el que se quiera hacer esto, Octave dispone de un comando llamado fflush(flujo_de_salida)En general el flujo de salida estándar es stdout en este caso, el propio intérprete. No obstante hay que expli-citarlo:

for contador=0:N# No se debe poner el ‘‘;’’ si se quiere usar fflush()disp("Hola mundo")fflush(stdout)

endfor

Nota: Si se quisiese mantener el efecto de este comando durante todo el script, puede inicializarse elarchivo incluyendo una única sentencia del siguiente modo:

>> more off;

El comando break

En ocasiones es necesario detener la ejecución de un determinado bucle en ejecución. Puede ser espera-ble disponer de una herramienta que nos permita detener el proceso si se está en busca de un elemento y elmismo es encontrado. Para estos casos existe un comando llamado break, que hace exactamente eso. Paraentender como funciona observemos el siguiente caso:

for contador = 1:Nvector_salida(contador) = vector_entrada(contador) + contador;if vector_salida(contador) == 10

break;else

vector_salida(contador)fflush(stdout);

endif;endfor;

Los comandos tic y toc

Sirven para contar la cantidad de tiempo de ejecución de un fragmento de código. El conteo comienzacon la invocación del comando tic y termina al invocar el comando toc.

Página 13