Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Rapido de Octave PDF
Tutorial Rapido de Octave PDF
1. Introducción
GNU Octave es un lenguaje de programación de alto nivel especializado en
cálculos numéricos. Es libre, gratuito y puede descargarse de
http://www.gnu.org/software/octave/download.html
2. Primer vistazo
Al iniciar el programa, ya sea en un entorno gráfico o por lı́nea de comando,
nos encontraremos con algún mensaje de bienvenida y la lı́nea de comando en
blanco para comenzar a trabajar.
>>
Existen dos maneras de trabajar con Octave: de forma directa, ingresando co-
mandos por la lı́nea de comandos, o bien generando un script. Un script es
un archivo de texto plano que contiene una serie de instrucciones que octave
puede interpretar y ejecutar, de extensión .m. Lo más usual es trabajar con
scripts, pero para comenzar este tutorial, los primero ejemplos se trabajarán
directamente por lı́nea de comando.
Lo más sencillo que podemos hacer en Octave son cuentas, por ejemplo
>> 1+1
ans = 2
>> 65998-4855
ans = 61143
>>
Todo resultado puede ser guardado en una variable. Para asignar un valor a
una variable, debemos utilizar el operador ‘=’.
>> a=1
a = 1
>> b=599
b = 599
>> c=a+b
c = 600
>> d=2*3
d = 6
>>
>> a=1;
>> b=599;
>> c=a+b;
>> d=2*3;
>> c*d
ans = 3600
>>
1 2
3 4
>> rVector=[1 2 3 4]
rVector =
1 2 3 4
>> cVector=[1;2;3;4]
cVector =
1
2
3
4
>>
Una vez que tenemos nuestra matriz almacenada en una variable, podemos
acceder independientemente a cualquier elemento en forma individual. Basta
con indicar entre paréntesis a cuál de todos los elementos queremos acceder.
0.90000 0.40000
0.20000 0.90000
>>
utilizarse para indicar que se desea tener acceso a todos los elementos de una
fila o columna, y de esta manera tomar filas y/o columnas individuales dentro
de una matriz
>> matrix(1,:)
ans =
>> matrix(:,1)
ans =
0.90000
0.30000
0.40000
>>
>> n=96;
>> x(n:end)
ans =
96 97 98 99 100
>> n=5;
>> x(end-n+1:end)
ans =
96 97 98 99 100
>>
El resultado en los últimos dos ejemplos es equivalente, sin embargo son dos
operaciones esencialmente diferentes. En el primer caso se accede a todos los
elementos a partir del n–ésimo elemento, mientras que en el segundo ejemplo se
accede a los últimos n elementos.
¿Qué sucede si necesitamos un vector con valores de 1 a 100? ¿Tenemos que
ingresar los 100 valores manualmente? Por suerte, no. Con el operador ‘:’ pueden
construirse vectores indicando el primer valor, el último valor, y el “paso” entre
elementos. Si no se indica un valor para el paso, Octave entiende por defecto
que éste es unitario.
>> [1:5]
ans =
1 2 3 4 5
>> [5:-1:1]
ans =
5 4 3 2 1
>> 11:3:20
ans =
11 14 17 20
>> [0:.2:1]
ans =
>>
Notar dos cosas del ejemplo anterior. Cuando se utiliza el operador ‘:’ no es
necesario utilizar los corchetes, Octave entiende que se está construyendo un
vector. Además, cuando se ingresan números decimales, no es necesario ingresar
el cero a la izquierda.
Como todos los elementos son matrices, todas las operaciones que se real-
izan en Octave son operaciones matriciales, por lo tanto las dimensiones de los
elementos involucrados en la operación deben ser acordes a la misma, en caso
contrario obtendremos un mensaje de error. Por ejemplo, no podemos sumar un
vector fila con un vector columna
>> x=rVector+cVector;
error: operator +: nonconformant arguments (op1 is 1x4, op2 is 4x1)
>>
pero sı́ podemos multiplicarlos, y dependiendo del orden de los factores el re-
sultado será un escalar o una matriz.
>> rVector*cVector
ans = 30
>> cVector*rVector
ans =
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
>>
9 8
7 6
>> A.*B
ans =
9 0
0 6
>> C^2
ans =
7 10
15 22
>> C.^2
ans =
1 4
9 16
>>
>> a=[(1+i) 1]
a =
1 + 1i 1 + 0i
>> D’
ans =
1 - 1i
1 - 0i
>> D.’
ans =
1 + 1i
1 + 0i
>>
4. Funciones
Un comando es una orden que el usuario le indica al programa. En las sec-
ciones anteriores ya le estuvimos indicando comandos al programa, ya que los
operadores matemáticos y el indexado de variables son ejemplos de comandos.
4 FUNCIONES 7
Existen otros comandos que pueden llegar a ser de utilidad, como por ejemplo
el comando exit, cerrar el programa.
Un comando que es de vital utilidad es help, el cual brinda información de
cualquier comando o función.
>>
http://www.math.utah.edu/docs/info/octave 9.html
Además de existir funciones matemáticas definidas, también existen con-
stantes matemáticas predefinidas. La lista completa de constantes matemáticas
disponibles en Octave se encuentra en
http://www.math.utah.edu/docs/info/octave 8.html
>> log(100)/log(10)
ans = 2
>> sqrt(3^2 + 4^2)
ans = 5
>>
>> x
x =
>> log10(x)
ans =
0 1 2 3 4
>> y
y =
1 4 9 16 25
>> sqrt(y)
ans =
1 2 3 4 5
>>
5. Cadenas de caracteres
Hasta el momento tratamos a las variables como numéricas, sin embargo
estas pueden tener carácter lógico (verdadero–falso), pueden ser registros, o
incluso cadenas de caracteres (strings). En esta sección trataremos a las variables
como strings, lo que puede ser de utilidad a la hora de realizar y rotular gráficos.
Se describen las nociones básicas del manejo de strings ası́ como las funciones
que serán de utilidad para el desarrollo de los trabajos prácticos.
Las strings se definen entre ‘’’ y se asignan a las variables de la misma
manera que los números.
>> string1(2:5)
ans = Hola
>> string1(end)
ans = !
>>
6 GRÁFICOS 9
http://www.gnu.org/software/octave/doc/interpreter/Output-Conversion-
Syntax.html
http://www.gnu.org/software/octave/doc/interpreter/Table-of-Output-
Conversions.html
Algunos ejemplos
6. Gráficos
Octave es una poderosa herramienta para manipular datos gracias a su ca-
pacidad de cálculo numérico. Sin embargo, ver resultados numéricos no siempre
es útil. En muchı́simos casos resulta de mayor utilidad interpretar los resultados
de forma gráfica. Para ello Octave cuenta con una gran variedad de funciones
destinadas a realizar gráficos. Entre ellas encontramos plot(), stem(), bar(),
6 GRÁFICOS 10
>> y=(1:10).^2;
>> plot(y);
>>
En este caso, el eje y toma los valores del vector y mientras que el eje x rep-
resenta el x–ésimo elemento del vector. Esta asignación al eje x puede no ser
representativa de los valores graficados, por ello la función plot() nos permite
asignarle valores especı́ficos a cada uno de los ejes, como se ve en el siguiente
ejemplo.
>> x=(-1:0.1:1);
>> y=x.^2;
>> plot(x,y);
>>
6 GRÁFICOS 11
Suele ser necesario tener que graficar más de una curva en un mismo gráfico.
Hay dos formas de hacer esto y cada una tiene sus ventajas y desventajas.
>> x1=(0:0.1:1);
>> y1=x1.^2;
>> x2=x1;
>> y2=x2.^3;
>> plot(x1,y1,x2,y2);
>>
6 GRÁFICOS 12
>> x1=(0:0.1:1);
>> y1=x1.^2;
>> x2=x1;
>> y2=x2.^3;
>> hold on;
>> plot(x1,y1);
>> plot(x2,y2);
>>
http://www.mathworks.com/help/techdoc/ref/linespec.html
>> t=(0:0.2:10);
>> f1=100;f2=200;f3=300;f4=50;
>> x1=sin(2*pi*f1*t*1e-3);
>> x2=sin(2*pi*f2*t*1e-3);
>> x3=sin(2*pi*f3*t*1e-3);
>> x4=sin(2*pi*f4*t*1e-3);
>> hold on
>> plot(t,x1,’r’,’linewidth’,3);
>> plot(t,x2,’bo’,’markersize’,15);
>> plot(t,x3,’k^-’,’markersize’,15);
>> plot(t,x4,’gx’,’markersize’,15);
>>
3 Sólo MATLAB
6 GRÁFICOS 14
Ahora las curvas tienen distinto formato, sin embargo todavı́a faltan ele-
mentos en el gráfico. Una persona que observe este gráfico puede preguntarse:
¿Qué se muestra en este gráfico? ¿Qué representan los ejes del gráfico? ¿Qué rep-
resenta cada una de las curvas? Para responder estas preguntas es necesario
agregar las etiquetas correspondientes que brinden la información necesaria.
Para ello existen un grupo de funciones que se encargan de agregar estas eti-
quetas. Las más importantes son: title(), xlabel(), ylabel y legend(). En
el siguiente ejemplo se agregan todas estas etiquetas al último gráfico.
>> figure(2)
>> figure
>> figure
>>
>> figure
>> figure
>> figure(1),hold on;
>> plot(t,x1,’b’,’linewidth’,3),plot(t,x2,’r’,’linewidth’,3);
>> figure(2),hold on;
>> plot(t,x3,’b’,’linewidth’,3),plot(t,x4,’r’,’linewidth’,3);
>>
Apéndice
A. Paquetes necesarios para realizar los traba-
jos prácticos4
Para lograr que el script del Trabajo Práctico corra correctamente en Octave
se debe instalar, además del Octave obviamente, tres paquetes de Octave-Forge.
Estos son: “optim”, “miscellneous”, “io”. En algunas distribuciones GNU/Linux
estos paquetes se encuentran en los repositorios. Por ejemplo, en Debian, es-
tos paquetes se encuentran en el repositorio oficial bajo el nombre de “octave-
optim”, “octave-miscellaneous” y “octave-io”. De esta forma, si se encuentran
en los repositorios de la distribucion que esten utilizando, se intalan mediante
su gestor de paquetes preferido y listo, ya están en condiciones de correr los
script sin problemas.
En el caso en que estos paquetes no estén en los repositorios de la distribución
que están utilizando deben bajarlos de la pagina de Octave-Forge
http://octave.sourceforge.net
Una vez descargados ambos paquetes deben instalarlos desde dentro de Oc-
tave de la siguiente forma
el asterisco ‘*’ al lado del nombre del paquete indica que este esta cargado. En
caso que el paquete no este cargado, se carga de la siguiente manera
4 Por Diego Fanego. Todo esto fue realizado en la version 3.0 de Octave. No fue probado
en versiones anteriores.
A PAQUETES NECESARIOS PARA REALIZAR LOS TRABAJOS PRÁCTICOS18