GNU OCTAVE
Enviado por folrex • 6 de Abril de 2012 • 5.706 Palabras (23 Páginas) • 549 Visitas
TEMA 1
GNU Octave
Octave se puede definir como un lenguaje de alto nivel inspirado en un software comercial llamado
MATLABr
(MATrix LABoratory).MATLABr
estuvo pensado inicialmente para ´algebra
num´erica lineal (matrices, vectores y sus operaciones), y con el tiempo se le ha sacado partido a
esta forma de trabajo. De la misma forma, Octave empez´o siendo un software para que los alumnos
de Ingenier´ıa Qu´ımica de las Universidades de Wisconsin-Madison y Texas calcularan
reacciones qu´ımicas.
A partir de ese momento, las contribuciones de los usuarios han hecho evolucionar este software
y han a˜nadido librer´ıas y funcionalidades. Ahora, las aplicaciones de Octave ya no se limitan
a simple trabajo con matrices y vectores, como una mera calculadora, sino que ahora aparte
de aplicaciones puramente matem´aticas o num´ericas, es v´alido para otros campos de ciencias e
ingenier´ıas. Entre ellos, el procesamiento de se˜nales (sonido), de im´agenes (filtrados, an´alisis, etc),
estad´ıstica, geometr´ıa, redes neuronales, sistemas de control realimentados y hasta dibujo vectorial.
Intentaremos poner ejemplos de cada una de estas aplicaciones en la medida de lo posible para
mostrar la versatilidad de Octave.
Estas librer´ıas se pueden programar de forma interpretada, usando el propio lenguaje de octave,
o de forma binaria, usando cualquiera de los lenguajes que soporte gcc como C/C++, pascal o fortran
(recordemos que todo el c´odigo objeto era intercambiable). Adem´as, tambi´en se puede hacer a la
inversa, es decir, traducir programas de octave a c++ usando una librer´ıa llamada liboctave. Con
esto se elimina la etapa de interpretaci´on al ejecutarlo con lo que se gana velocidad cuando ´esta
sea determinante. Parece que hay bastantes cosas por ver, as´ı que vamos a empezar.
1.1. Entorno
Octave tiene una filosof´ıa de uso semejante a la de muchas otras aplicaciones de este libro: una
interfaz en forma de shell, con una linea de comandos potente con muchos atajos y facilidades,
para problemas sencillos, y la posibilidad de poder agrupar muchos comandos en ficheros de scripts,
organizados en funciones, para enfrentarse a problemas complejos o para realizar automatizaciones.
Para comenzar a ver el manejo b´asico vamos a ejecutar Octave de manera interactiva. Con este
m´etodo de trabajo, si cometemos un error al entrar una l´ınea, podremos corregirlo sobre la marcha.
1
Para ejecutarlo, abre un terminal y en la l´ınea de comandos teclea octave. Tras un mensaje de
bienvenida, Octave te muestra un prompt que indica que est´a preparado y a la espera de comandos.
En algunas distribuciones, Octave puede tener su icono en uno de los men´ues del sistema, en la
zona de aplicaciones matem´aticas. Teclear octave en la consola es m´as r´apido y funciona el 100%
de las veces. Esto es lo que se nos muestra:
$ octave
GNU Octave, version 2.1.34 (i386-pc-linux-gnu).
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 John W. Eaton.
This is free software with ABSOLUTELY NO WARRANTY.
For details, type ‘warranty’.
octave:1>
Cuando quieras salir de Octave teclea exit, quit o C-D y volver´as al shell de partida.
La ayuda completa de octave la puedes obtener desde el prompt tecleando help -i. Tambi´en
puedes visualizar la misma ayuda desde el shell tecleando info octave. Luego, la documentaci´on
para cada funci´on y variables se obtienen tecleando help nombredelafuncion. Por ejemplo:
octave:9> help coth
coth is the user-defined function from the file
/usr/share/octave/2.1.34/m/elfun/coth.m
- Mapping Function: coth (X)
Compute the hyperbolic cotangent of each element of X.
La mayor´ıa de los comandos de Octave disponen de esta ayuda. Vemos que se nos dice una
descripci´on de los par´ametros y lo que realiza la funci´on, lo cual es suficiente para que podamos
utilizarla.
Cuando se invoca sin argumentos se obtiene un listado de todas las operaciones, funciones y
variables incorporadas definidas en el sistema. Para conseguir esta informaci´on, Octave rastrea
por los directorios donde est´an instaladas las funciones; de ah´ı su peculiar forma de organizar
esta salida, que nos muestra las funciones clasificadas por temas, lo que puede ayudarnos a mirar
y probar funciones. Adem´as, aqu´ı podemos encontrarnos funciones que no est´an pasadas a la
documentaci´on.
Octave usa la librer´ıa GNU readline para la edici´on en l´ınea de comandos, al igual que bash
y otros programas GNU. Contiene un historial que se puede leer con las flechas arriba y abajo,
muchas combinaciones de teclas para hacer muchas cosas. Para m´as informaci´on y explicaci´on sobre
estas caracter´ısticas teclea desde un shell info rluserman. No entraremos m´as en este tema.
Cada vez que te equivoques en la sintaxis, octave te indicar´a la posici´on donde cree que est´a el
fallo con un angulillo ^. A veces no se puede fiar uno completamente, y s´olo te ayuda a saber m´as
o menos donde se localiza. Ve´amoslo aqu´ı:
octave:13> functon y = f (x) y = x^2; endfunction
parse error:
2
>>> functon y = f (x) y = x^2; endfunction
^
Otro tipo de errores pueden ocurrir dentro de funciones. En este caso, son errores en tiempo de
ejecuci´on, porque ocurren por un fallo en la ejecuci´on del programa. En este caso, lo que aparece
es la l´ınea y posici´on dentro de la funci´on y en la funci´on que lo llam´o y en las siguientes. Por
ejemplo, en este hipot´etico caso:
octave:13> f ()
error: ‘x’ undefined near line 1 column 24
error: evaluating expression near line 1, column 24
error: evaluating assignment expression near line 1, column 22
error: called from ‘f’
En este caso, la funci´on f se compone de unas funciones que se llaman a otras. El error est´a en
la l´ınea 1 con una x mal definida. La funci´on que contiene este error, seg´un octave, formaba parte
de una expresi´on en la linea 1, que a su vez formaba parte de una asignaci´on tambien en la l´ınea
1. Obs´ervese que la funci´on es la que definimos en el anterior ejemplo y el error es que hace falta
pasarle un par´ametro a la funci´on.
Los comentarios dentro del c´odigo de octave se preceden con el car´acter
...