Matlab - Almacenamiento posicion de datos tras un bucle for

   
Vista:

Almacenamiento posicion de datos tras un bucle for

Publicado por Ruben (14 intervenciones) el 26/03/2015 12:39:43
Hola a todos,
estoy haciendo un bucle para leer una matriz de tamaño 3807x996. Esta matriz tiene valores constantes en su mayoria salvo algunos valores que van de 10 a 50.
Lo que quiero de Matlab es que recorra la matriz por columnas (eso ya está conseguido) y cuando encuentre el primero de estos valores de entre 10 y 50 me guarde la posición, y que cuando encuentre el último de esos valores de la columna me guarde también su posición.
Al final debería tener una 2 posiciones (i,j) en cada una de las 996 columnas.
No sé si es posible eso.
Adjunto el código que llevo escrito:
h=open('DustMS_Lev2_KlettPDR.fig');
h1=findobj(h);
y5 = get(h1(5),'CData');
y6 = get(h1(5),'XData');
y7 = get(h1(5),'YData');
nfile=max(size(y5));
for i=1:nfile;
for j=1:996;
if y5(i,j)<10;
y5(i,j)=-1;
end
end
end

for j=1:996;
for i=1:nfile;
if y5(i,j)>0;
x=find(y5(i,j));
O3(i,j)=i;
O4(i,j)=j;
% save(i,j)('columna(j)','j')
end
end
end

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 JESUS

Almacenamiento posicion de datos tras un bucle for

Publicado por JESUS (758 intervenciones) el 03/04/2015 09:48:31
bueno Ruben sí es posible y esta manera es corta:

A=magic(5) %aquí colocas tu matriz la que tengas no importa el tamaño 3807x996
for j=1:length(A(:,1))
B(1:2,j)=[find(and(A(:,j)<=50,A(:,j)>=10),1,'first');find(and(A(:,j)<=50,A(:,j)>=10),1,'last')]
end
%B te da en cada columna la primera y última posición del valor que encuentra
%éxitos
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