Matlab - agrupar datos

   
Vista:

agrupar datos

Publicado por juan (3 intervenciones) el 21/03/2017 23:29:53
Buenas, necesito hacer una segmentación de datos en un vector para que solo me queden los datos que necesito.
Necesito que solo me queden los datos gráficamente están unos al lados de otro y que no sean mas 5 datos.
ejemplo:

x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
y=[1 2 5 6 5 5 1 3 7 2 9 8 9 9 8 1 4 3 4]

resultado:

x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
y=[0 0 5 6 5 5 0 0 0 0 0 0 0 0 0 0 4 3 4]

gráficamente seria algo así:

titulo

Gracias por sus respuestas
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 DAVID

agrupar datos

Publicado por JESUS DAVID jesus.royeth@gmail.com (1584 intervenciones) el 21/03/2017 23:50:30
a qué valores en Y le debes dar 0 ?? , dices que no sean más de 5 datos y veo 6 , los puedes tomar aleatorios pero que queden cada uno al lado de otro o como sería?
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

agrupar datos

Publicado por juan (3 intervenciones) el 21/03/2017 23:57:16
debo quedarme con los datos que estén unos al lado de otros como por ejemplo a menos de una unidad de distancia y que no sean mas de 5 datos pero tampoco menos de 3. ejemplo en Y se queda 6 5 5 5 y 4 3 4 porque están gráficamente al lado y son entre 3 y 5 datos, el resto cero. Espero hacerme entender.
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 JESUS DAVID ARIZA ROYETH

agrupar datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
y=[1 2 5 6 5 5 1 3 7 2 9 8 9 9 8 1 4 3 4];
l=[diff(y) 2];
l(or(l==-1,l==0))=1;
l(l~=1)=0;
k=find(l==1);
k([2 diff(k)]==1)=[];
k=[k length(y)+1];
for j=1:length(k)-1
    v=sum(l(k(j):k(j+1)-1));
    if v<2 || v>4
        l(k(j):k(j+1)-1)=0;
    else
        l(k(j)+v)=1;
    end
end
nuevoy=y.*l

saludos, este problema normalmente en inteligencia artificial se resuelve con un autómata celular porque requiere de unas reglas, pero te propongo esa solución algorítmica, en nuevoy tienes el y con el filtrado de datos
Jesús David Ariza Royeth
https://www.facebook.com/royethmatlab/
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

agrupar datos

Publicado por juan (3 intervenciones) el 23/03/2017 03:49:40
muchas gracias fue de mucha ayuda!!
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
Revisar política de publicidad