Matlab - Llamar una función cuyas entradas sean variables.

 
Vista:
sin imagen de perfil
Val: 31
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Llamar una función cuyas entradas sean variables.

Publicado por Simón (18 intervenciones) el 06/06/2020 23:29:34
Hola a todos,
Tengo un vector llamado "nombres", el cual tiene 5 celdas con distintos nombres, es decir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
nombres=cell(5,1);
for ii=1:5
nombres{ii,1}=['mat',num2str(ii),'DEF'];
end
 
nombres =
 
  5×1 cell array
 
    {'mat1DEF'}
    {'mat2DEF'}
    {'mat3DEF'}
    {'mat4DEF'}
    {'mat5DEF'}

Entonces, en mi espacio de trabajo tengo 5 matrices, nombradas con esos mismos nombres.
Adicionalmente, creé una función que tiene como objetivo recibir alguna de esas matrices para retornar una determinada salida, es decir:
1
[matRes] = mifuncion(mat1DEF);

Lo que quiero hacer entonces, es que cada una de esas celdas de la función nombres le entre a la función de manera automática. Entonces pensé en algo así:

1
2
3
for ii=1:5
[matRes] = mifuncion(nombres{ii});
end

El problema es que no sé qué tengo que poner en el argumento de entrada de la función como tal. Es decir, estoy intentando esto pero no funciona:

1
function [matRES] = cepstrumfx(nombres{ii})  %aquí, en la entrada de la función no sé que poner

No sé qué poner ahí, ya que la entrada como tal está variando constantemente.

Espero me puedan ayudar, muchas gracias.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Llamar una función cuyas entradas sean variables.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 07/06/2020 06:16:31
1
function [matRES] = cepstrumfx(datos )  %aquí, en la entrada de la función no sé que poner
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
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Llamar una función cuyas entradas sean variables.

Publicado por Daniel (354 intervenciones) el 07/06/2020 12:05:52
Hola,

A la función hay que pasarle los datos con los que va a trabajar. Por lo que entiendo, en el caso planteado la celda contiene los nombres de las variables, no las variables, por lo que lo que se le esta pasando es eso, una cadena de texto.

La solución rápida es usar eval(), aunque es una práctica completamente desaconsejable. Lo ideal es guardar las variables en la celda. Así

1
mifuncion(eval(nombres{ii}));

debería funcionar, ya que los que se pasa es el resultado de evaluar el nombre de la variable, que es su contenido.


Saludos,
Daniel Rodríguez
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar