Академический Документы
Профессиональный Документы
Культура Документы
Informática
ITBA 1
Teoría 5
Octave
Lenguaje de programación de alto nivel
orientado al procesamiento numérico.
Permite resolver problemas de álgebra lineal,
integrar funciones numéricamente, manipular
polinomios, operar con matrices, etc.
1
Octave Características
• Dirección www.octave.org.
Octave Características
2
Octave Ejecución
Octave Ayuda
3
Tipos de datos
Octave numéricos
Los operadores que aplican a estos tipos de
número son + - / * ^
z Números naturales 12
z Números reales 3.4
z Notación exponencial 4.37E-8
z Números complejos 2 + 8i 1 - 3i
Octave Strings
4
Octave Escapes
Escapes
\\ Barra invertida
\" Comillas dobles
\' Comillas simples
\n Nueva linea
\t Tab
\v Vertical tab
9
Octave Vectores
5
Octave Matrices
El operador :
Octave
¾ Genera un vector que contiene una secuencia de números
¾ El comando a:b crea el vector
[a a+1 a+2 ... b]
¾ El comando a:c:b crea el vector
[a a+c a+2*c a+3*c ... b]
octave:1> 1:8
ans = 1 2 3 4 5 6 7 8
octave:2> 4:6
ans = 4 5 6
octave:3> 2:0.25:3
ans = 2.00 2.25 2.50
2.75 3.00
12
6
Funciones para la
Octave construcción matrices
z ones(N) crea una matriz de NxN con todos sus
elementos igual a uno
z ones(F,C) crea una matriz de FxC con todos unos
z zeros(N) y zeros(F,C) crea una matriz de NxN o
FxC de ceros
z eye(N) y eye(F,C) crea una matriz identidad de
tamaño NxN o FxC
z rand(N) y rand(F,C) crea una matriz de tamaño
NxN o FxC con valores aletorios entre 0 y 1
13
Operaciones entre
Octave elementos
z Al aplicar los operadores se debe tener en
cuenta que la operación tenga sentido
matemático. Por ejemplo:
z Para que sea posible multiplicar dos matrices la
primera matriz debe tener tantas columnas como la
segunda filas.
z Para sumar matrices y/o vectores ambos operandos
deben tener la misma cantidad de elementos.
z Si los operandos son mixtos, la operación es
elemento a elemento.
14
7
Resumen de
Octave Operadores Aritméticos
a + b Suma y resta de escalares
a - b Suma y resta de matrices
a.+ b Suma y resta de matrices elemento a elemento
a.- b
a * b Producto y división de dos escalares
a / b Producto y división de dos matrices
a.* b Producto y división de matrices elemento a elemento
a./ b
a ^ b Potencia de un escalar o una matriz
a.^ b Potencia de los elementos de una matriz
15
Resumen de Operadores
Octave Relacionales
a == b Igualdad, la respuesta es 1 si a es igual a b, ó
0 en caso contrario
a ~= b Desigualdad, la respuesta es 1 si a es distinto
a <> b a b, ó 0 en caso contrario
a != b
a < b 1 si a es menor a b
a > b 1 si a es mayor a b
a <= b 1 si a es menor o igual a b
a >= b 1 si a es mayor o igual a b
16
8
Octave Resumen de Operadores
Lógicos
!x Not, 1 si x es 0 y
~x 0 si x es distinto de 0
a | b Or, 1 si a ó b es distinto de 0
a || b
17
octave:1> [ 1 2 3; 4 5 6]
ans = 1 2 3
4 5 6
octave:2> [ 1 2 3; 4 5 6] '
ans = 1 4
2 5
3 6
18
9
Octave Variables
octave:1> respuesta = 3 + 5 * 2
respuesta = 13
octave:2>X = (3 + 5) * 2
X = 16
octave:3> Y = 3 * X + 4
Y = 52
19
pi 3.1416
e 2.7183
inf Inf
true 1
false 0
Contiene la respuesta a la ultima
ans operación no asignada
20
10
Acceso a los elementos
Octave de una matriz con :
21
22
11
Funciones
Octave Trigonométricas
z Los ángulos son expresados en radianes
z Para pasar de grados a radianes se multiplicar por pi/180
23
12
Funciones para
Octave vectores y matrices
length(x) Si x es un vector devuelve su longitud.
Si x es una matriz devuelve la cantidad de filas o
columnas, el valor que sea mayor
size(x) Devuelve un vector de dos elementos con la cantidad de
filas y de columnas de x
sum(x) Si x es un vector retorna la suma de sus elementos
Si x es una matriz retorna un vector con la suma de los
elementos de cada columna
prod(x) Si x es un vector retorna el producto de todos sus
elementos
Si x es una matriz retorna un vector con el producto de
los elementos de cada columna
25
Funciones para
Octave vectores y matrices
m = max(x) Si x es un vector max asigna a m el mayor
elemento de x
[m i] = max(x) Si x es un vector max asigna a m el mayor
elemento de x y le asigna a i la posición de
dicho elemento
diag(x) Construye una matriz cuya diagonal es el vector
x o bien devuelve un vector con los elementos de
la diagonal de la matriz x
det(x) Calcula el determinante de la matriz x
inv(x) Calcula la inversa de la matriz x
rank(x) Calcula el rango de la matriz x
26
13
Octave Ejemplos de uso de funciones
sobre vectores y matrices
x = [1, 2, 3, 4, 1];
y = [5; 3; 2];
z = [1, 3, 4, 2; 2, 3, 5, 1];
length(x) => 5
length(y) => 3
length(z) => 4
length(z’) => 4
sum(x) => 11
max(y) => 5
sum(z) => 3 6 9 3
prod(z) => 2 9 20 2
27
14
Octave Funciones para Strings
29
30
15
Octave Gráficos
Octave no cuenta con una interfase gráfica. Para generar
gráficos se basa en la aplicación gnuPlot.
31
Gráficos en dos
Octave dimensiones
• Se utiliza el comando plot.
• En su versión más simple el comando plot(x) grafica los
elementos del vector x.
octave:1> X = sin(0:0.1:2*pi);
octave:2> plot(X)
32
16
Gráficos en dos
Octave dimensiones
33
Gráficos en dos
Octave dimensiones
octave:1> X = 0:0.1:2*pi;
octave:2> plot(X,sin(X))
34
17
Formato de gráficos en dos
Octave dimensiones
”*g;Coseno de X;”
Los puntos se
indican con un Título de la serie
asterisco (encerrado entre ; )
Los puntos son
de color verde
(green) 35
z Color:
“r” rojo “g” verde
“b” azul “m” magenta
“c” cyan “w” blanco
36
18
Formato de gráficos en dos
Octave dimensiones
octave:1> X = 0:0.1:2*pi;
octave:2> plot(X,sin(X), "*g;seno de X;")
37
38
19
Octave Gráfico de más de una curva
39
40
20
Octave Gráficos divididos
41
42
21
Archivos: Almacenamiento y
Octave recupero de datos
load “filename”
Crea una variable con nombre filename a la que le asigna el
contenido del archivo
43
Archivos: Almacenamiento
Octave y recupero de datos
22
Ejemplo de exportación
Octave
Versión Deprecated de un gráfico
octave:1> __gnuplot_set__ output “plot.png”
octave:2> __gnuplot_set__ terminal png
octave:3> replot
octave:4> __gnuplot_set__ output
octave:5> __gnuplot_set__ terminal x11
USAR
PRINT(“archivo.png”)
45
46
23
Octave Ejemplos:
__gnuplot_set__ terminal png small color
47
48
24
Archivo PAshow.txt
Octave load “PArterial.txt”
time = PArterial(:,1);
Ejemplo de pressure = PArterial(:,2);
script deltaP = PArterial(:,3);
plot(time,pressure+deltaP);
octave:1> source("PAshow.txt");
49
Octave Funciones
z Octave permite que el usuario escriba sus propias
funciones.
z A diferencia de los scripts, pueden recibir parámetros y/o
retornar valores
z Cada función se escribe en un archivo
z El archivo debe llamarse igual que la función con
extensión ".m“
z Ejemplo de invocación con pasaje de parámetro:
z Ejecutar : Octave
z Dentro del contexto de octave ejecutar :
z CalcularRaiz (8)
50
25
Declaración de
Octave funciones
function ans = MiFuncion(parm1, param2)
ans = param1 + param2;
51
Octave Comentarios
function ans = sigma(x)
% Función que calcula el valor de sigma de x.
% si x es un vector o una matriz calcula el
% valor de sigma para cada uno de sus
% elementos.
26
Octave El condicional if
if( condicion ),
% Comandos a ejecutar si la
% condicion es cierta
else
% Comandos a ejecutar si la
% condicion es falsa
end
% validación de la edad
if( edad > 18 & edad < 20 ),
% entonces tiene 19
disp(“usted tiene 19 años”);
end
53
54
27
El condicional
Octave switch
switch variable
case etiqueta1
% comandos para etiqueta1
case { etiqueta2, etiqueta3 }
% comandos para etiqueta2
…
otherwise
% comandos para valores imprevistos
end
55
Ejemplo de
Octave switch
function str=comentarNota(nota)
% retorna un string con un comentario de la nota
% si es un vector retorna “error”
if(length(nota)==1), %verifica que nota sea escalar
switch(nota)
case 10
str=“excelente”;
case { 9, 8, 7 }
str=“bien”;
case { 6, 5, 4 }
str=“regular”;
case { 3, 2, 1 }
str=“mal”;
otherwise
str=“entrada invalida”;
end
else
str=“error”;
end
56
28
Octave Ciclo for
for variable = expresion
% comandos del ciclo
end
% impresión de potencias
for a = 0:9
disp(a^2);
end
57
%suma acumulada
for val = x
sum = sum + val;
end
else
% si es una matriz
sum = 0;
end 58
29
Octave Ciclo while
while( condicion )
% comandos del ciclo
end
% impresión de potencias
a = 0;
while (a < 10)
disp(a^2);
a = a + 1;
end
59
%suma acumulada
while(acum < x)
n = n + 1;
acum = acum + n;
end
else
% si no es un escalar
n = 0;
end
60
30
Consejos de programación
z Documentar
z Nombres relacionados al contenido de las
variables y las funciones
z Funciones cortas y claras
z Validar los parámetros de entrada
z Mensajes de error claros
61
31