Ayuda de Octave

% OCTAVE es un lenguaje de script que permite realizar calculos,
% especialmente operaciones matriciales.

% Se puede escribir "octave" en el prompt de LINUX y trabajar
% interactivamente, o bien tener un conjunto de instrucciones
% guardadas en un archivo (prog.m) y ejecutarlas con "octave prog.m"
% desde el prompt de LINUX. La primera forma es util para probar
% cosas, y la segunda es recomendable para hacer los practicos.

% Los comentarios se hacen poniendo el simbolo "%" al pricipio de un renglon

% Para buscar ayuda de un comando (e.g., rand)
help rand

% Hay algo para calcular autovalores (eigenvalues en ingles)?
lookfor eigenvalues

% que variables hay ya definidas?
who

% borrar todas las variables definidas hasta ahora
clear

% Hice muchas cosas pero no tome nota...
history
% probar:
history 10

% quiero guardar todas las cosas que vaya haciendo en el interprete
diary on
diary off

%%%%%% GENERAR DATOS

% Crear vectores y matrices: "," o espacio separa elementos,
% y ";" separa columnas
A = [ 1, 2, 3, 4 ]
A = [ 1 2 3 4 ]
A = [ 1, 2; 3, 4 ]
A = [ 1 2; 3 4 ]

% Para ver un elemento de la matriz, o una parte:
A(1,2)
A(1,:)
A(:,2)

% Notar que OCTAVE siempre muestra el resultado de una operacion.
% Para que no lo muestre, poner ";" al final:

A = [ 1 2; 3 4 ];

% el vector de 1 a 10
b = [1:10]

% el vector de 1 a 10, con saltos de a 0.1
c = [1:0.1:10]

% Matriz 2x3 con ceros o unos
C = zeros(2,3)
D = ones(2,3)

% matriz identidad 2x2
E = eye(2)

% 25 numeros aleatorios uniformes entre 0 y 100
u = unifrnd(0, 100, 1, 25)

% 25 numeros aleatorios gaussianos con media 0 y sigma 5
% Create a 5x5 matrix with normally distributed random variables with a
% mean of 2.5 and a sigma of 5.0.
N = normrnd(0, 5, 1, 25)

% OCTAVE es muy bueno haciendo operaciones matriciales.
% Por ejemplo, calcular la traspuesta e inversa de una matrix A:
A'
inv(A)

% Que hace esto? :
H = A * 2 + A .* E + A .^ 2

% ESTRUCTURAS DE PROGRAMA

% Funciones:

% Las funciones tienen el siguiente formato:
% function [salida1, salida2, ...] = <nombre_funcion>(entrada1, entrada2, ...)
%
% end

% ejemplo de funcion:

function s = sumar(a, b)
s = a + b;
end

% luego,
mysuma = sumar(4,5)
% hace lo mismo que
mysuma = 4 + 5

% Lazos y condiciones:

for i=1:10
  if mod(i,2)==0
    disp(['par: ', num2str(i)])
  else
    disp(['impar: ', num2str(i)])
  end
end

% GRAFICOS (BASICO)

% Si quiero graficar dos vectores, x, y:
plot(x,y)

% (deben ser del mismo tama#o)

% Por ejemplo, para graficar seno y coseno:
% ("hold: es para que no borre el anterior)

x = [-pi:0.1:pi]
plot(x, sin(x))
hold on
plot(x, cos(x))

% Ahora lo mismo, con una linea de comandos, pero en seno con
% puntos (o) rojos (r) y el coseno con linea azul (b):
plot(x, sin(x), 'ro', x, cos(x), 'b')