Matlab - Repetir operaciones en varios archivos

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

Repetir operaciones en varios archivos

Publicado por Dinibel (42 intervenciones) el 28/05/2019 21:28:05
Hola, tengo 4 matrices en el workspace de mi matlab:
est_1
est_2
est_3
est_4

1
2
3
4
5
for i=1:4
    input = est_i
    ind_24              = find(input(:,5)==24);
    input(ind_24,:)= [];
end

Estoy tratando de hacer unas operaciones sobre cada uno de esas matrices y que se guarden los resultados, es decir que efectúe ciertas operaciones sobre est_1 y guarde los resultados como input_1, después sobre est_2 y guarde los resultados como input_2

Se me ocurrió lo de arriba, pero no funciona por ningún lado, me podrán ayudar?
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
sin imagen de perfil
Val: 663
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Repetir operaciones en varios archivos

Publicado por Daniel (183 intervenciones) el 29/05/2019 15:29:50
Hola,

Aunque no es la mejor opción puedes usar eval para cargar las variables.

1
input = eval(['est_', num2str(1)]);

Posiblemente sea mejor guardar las variables en una celda

1
est = {est_1, est_2, est_3, est_4};

para luego:

1
input = est{i};

Aquí explican los múltiples motivos por los que no se debería usar eval
https://es.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval

Saludos,
Daniel Rodríguez.
Analytics Lane
Matlab en 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
0
Comentar
sin imagen de perfil
Val: 85
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Repetir operaciones en varios archivos

Publicado por Dinibel (42 intervenciones) el 30/05/2019 14:34:13
Muchas Gracia por tu respuesta, efectivamente hago las dos ultimas lineas que me recomiendas, sin embargo, necesito una recomendación más.

1
2
3
4
5
6
7
8
9
10
11
>> puntos = 4;
>> for i=1:puntos
load(['est_',num2str(i),'.est']);
end
>> est = {est_1, est_2, est_3, est_4}; %esto lo puedo meter en el bucle, porque por ahora son 4, pero serán mas de 20 al final
>> for i=1:puntos
    input = est{i};
    ind_24              = find(input(:,5)==24);
    input(ind_24,:)= [];
end
>>

Es la ultima linea cuando genera y guarda a el input nuevo, solamente guarda el que hizo con est_4, pero yo los quiero todos. Que puedo hacer?
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: 663
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Repetir operaciones en varios archivos

Publicado por Daniel (183 intervenciones) el 30/05/2019 22:25:00
Hola,

Puedes crear una nueva celda para guardar los resultados.

1
2
3
4
5
6
for i=1:puntos
    input = est{i};
    ind_24              = find(input(:,5)==24);
    input(ind_24,:)= [];
    resultados{i}= input;
end


Saludos,
Daniel Rodríguez.
Analytics Lane
Matlab en 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
0
Comentar