Matlab - Como pasar argumento of type 'struct' a función

 
Vista:

Como pasar argumento of type 'struct' a función

Publicado por Sara (1 intervención) el 27/10/2012 13:40:34
Hola tengo un problema:

Yo declaro mi fichero: opciones.m que es un <1x1 struct> con varios valores: opciones.X=.. opciones.Y=... ect

Lo ejecuto en Matlab y me aparece correctamente en el workspace. Ahora esto lo quiero pasa como argumento a una función desde consola matlab. El fichero se podrá llamar Prueba.m y dentro tiene la siguiente forma:

function out=Prueba(opciones)

por lo tanto, digo yo que a esta función habrá que llamarla desde la consola de una manera así:

out=Prueba(opciones) para pasarle el struct (opciones) que tengo ya en el workspace... bien pues cuando hago esto me aparece un error que pone:

??? Undefined function or method 'Prueba' for input arguments of type 'struct'.

Es la primera ver que quiero pasar un argumento de este tipo a una función en Matlab, por lo que supongo que estoy haciendo algo incorrecto.

Muchas gracias.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como pasar argumento of type 'struct' a función

Publicado por Ernesto (1 intervención) el 02/09/2014 17:27:05
Hola, yo he tenido el mismo problema por un rato, y no he encontrado una respuesta que sea satisfactoria. Por fortuna despues de pasar un tiempo buscando encontré material que hablaba sobre el tipo struct y menciona una función que trabaja con ellas, la cual es 'fieldnames' y regresa el nombre de los campos de una variable struct.

Entonces pensé en hacer una función que como unica acción llamara a 'fieldnames' y funcionó. Otra función que trabaja con estructuras es 'getfield', así que añadí esa función a la mía para leer el valor del campo uno de la estructura de entrada y escribirlo como el campo uno de la estructura de salida como sigue:

function struct_out = struct_function(struct_in)
struct_fields=fieldnames(struct_in);

field_one=struct_fields{1};

value_01=getfield(struct_in,field_one);

struct_out.field_01=value_01;

Por la fecha se que la respuesta no fue pronta, pero aun así espero pueda ser de ayuda a alguien con el mismo problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar