Matlab - utilizar matrices ya dadas en un bucle para ir interpolandolas

   
Vista:

utilizar matrices ya dadas en un bucle para ir interpolandolas

Publicado por Jesus villalorenzojesus@gmail.com (9 intervenciones) el 26/01/2015 11:36:50
Buenos días. Tengo diferentes matrices de datos que tomé de SIMULINK así pues tengo que hacer una interpolación por cada una de ellas y para ello necesito usar un bucle. Las tengo nombradas como SS1, SS2 etc... como puedo llamarlas en el bucle? Con SSi no me funciona. 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 Daniel

utilizar matrices ya dadas en un bucle para ir interpolandolas

Publicado por Daniel (212 intervenciones) el 26/01/2015 16:41:17
algo así te puede servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i=1:n
 
% "eval" se usa para hacer que un string se convierta en una "linea del código"
% aqui estoy "escribiendo" m=SSi;  
eval(['m=SS' num2str(i) ';'])
 
% ahora m es igual a SSi
 
% aquí podes poner la operación que desees hacer
 
% por ultimo te conviene borrar m antes de asignarle la matriz SS i+1
 
clear m
 
end


saludos

Daniel
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
Imágen de perfil de Daniel

utilizar matrices ya dadas en un bucle para ir interpolandolas

Publicado por Daniel (212 intervenciones) el 28/01/2015 16:16:57
Copio aquí una pregunta que me hizo llegar Jesus, la respondo aquí por si a alguien mas le sirve:

Pregrunta de Jesus:

Buenos días Daniel, muchas gracias por tu respuesta en el hilo. Así pues yo deseo hacer esto:

tengo numerosas matrices de dos columnas que vienen de siimulink: SS1 SS2 SS3... hasta SS60 así pues tengo que hacer esto para cada una de ellas:

xi= SSi (2:650,1); %aqui cojo columna 1 y corto hasta el valor 650
yi=SSi(2:650,1),%aqui cojo columna 2 y corto hasta el valor 650
xint i =interp1(yi,xi,intervalo); %aqui hago la interpolación

así pues necesito hacer eso 60 veces pero no se como cortar con el eval que me dijiste ni como ir guardando en xi e yi. MUCHÍSIMAS GRACIAS DE ANTEMANO

Respuesta


si tenes matrices SS1 SS2 .. SS60

1
2
3
4
5
6
7
8
9
10
intervalo=0:.001:1; %definicion del intervalo de interpolacion
for i=1:60 % de 1 al numero de matrices que tengas
 
    ci=num2str(i); % pasa cada numero que toma "i" a texto  
    eval(['x' ci '=SS' ci '(1:650,1);']); % escribe xi=SSi(1:650,1);
    eval(['y' ci '=SS' ci '(1:650,2);']); % escribe yi=SSi(1:650,2);
 
    % escribe xinti=interp1(yi,xi,intervalo);
    eval(['xint' ci '=interp1(y' ci ',x' ci ',intervalo);']);
end


PD: la idea del foro es que preguntemos y respondamos por esta vía, así alguien más puede aportar dudas y/o soluciones, yo particularmente aprendí y sigo aprendiendo mucho gracias a las preguntas y respuestas que hacen todos...

Saludos

Daniel
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