Ayuda con funciones en Octave

Aziwar

Bueno... trás 2h batallando con la definición de funciones en Octave me rindo..

Estoy haciendo un programita en el que necesito una pila, por lo que usando 1 array quiero implementar las funcioens push y pop.

function [ind, pila] = push(ind, pila, x)
   ind = ind + 1
   pila(ind) = x
endfunction;

y después la llamo como [ind, pila] = push(ind, pila, x)

Otro modo..

function resultado = push(ind, pila, x)
   ind = ind + 1
   pila(ind) = x
   resultado(1) = ind
   resultado(2) = pila
endfunction;


resultado = push(ind, pila, x)
ind = resultado(1)
pila = resultad(2)

Y nada tampoco funciona...

Que estoy haciendo mal? siempre me dice que ind no está declarado por mucho que lo esté.

dagavi

A mi me va el primero.

X = [];
ind = 0;
[ind, X] = push(ind, X, 1);
[ind, X] = push(ind, X, 2);


X
X =

   1   2

Aun así no me gusta nada que tengas que pasar el índice. Yo se lo quitaría y haría res = push(X), en la función ya mirarás el índice don length o size.

Aziwar

En cuestión de mejora de tiempo de ejecución (va a ser para movimiento de un robot) mejor pasar un parámetro que llamar una función.

Ya se cual era el fallo.. o bien declaraba algo antes (por ejemplo un load) o bien renombraba el nombre del fichero a push.m

Usuarios habituales

  • Aziwar
  • dagavi