Matlab - Eliminar elementos repetidos de un array

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

Eliminar elementos repetidos de un array

Publicado por Ariadna (20 intervenciones) el 25/07/2019 20:36:32
Buenos días,

Quiero eliminar los elementos de una lista que se encuentren repetidos, pero sólo si están seguidos. Para ello he escrito este código:

1
2
3
4
5
6
7
prc=[1,1,2,3,4,6,8,8,8,1];
for j=2:length(prc)
    if prc(j)== prc(j-1)
        prc(j)=[]
    end
 
end

Pero me da el error:

Index exceeds matrix dimensions.

Error in BARCOS (line 26)
if prc(j)== prc(j-1)

Alguien sabe como arreglarlo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos repetidos de un array

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 25/07/2019 20:43:29
el error se debe a que cuando eliminas un elemento repetido la longitud del vector cambia y va a ser más pequeña, por eso te da ese error, sin embargo puedes reemplazar tu código por el siguiente:

1
2
prc=[1,1,2,3,4,6,8,8,8,1];
prc([nan diff(prc)]==0)=[];
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
sin imagen de perfil
Val: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos repetidos de un array

Publicado por Ariadna (20 intervenciones) el 25/07/2019 20:45:33
Muchas gracias!
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: 35
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos repetidos de un array

Publicado por Ariadna (20 intervenciones) el 25/07/2019 21:17:24
Podría funcionar también si prc fuera una matriz?
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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos repetidos de un array

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 25/07/2019 23:35:36
Depende del sentido que tú le des ya que recuerda que las matrices son cuadradas y puede que en algunas filas se eliminen más elementos que otros por lo tanto o te toca rellenar con ceros o darle algún otro sentido
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar elementos repetidos de un array

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/07/2019 16:37:30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear
prc=[1,1,2,3,4,6,8,8,8,1]
n=length(prc);
j=2;
while j<=n
    if prc(j)== prc(j-1)
        prc(j)=[];
        n=length(prc);
        j=j-1;
    end
    j=j+1;
 
end
prc


1
2
3
4
5
6
7
8
>> eliminar_elementos_repetidos_consecutivos1
prc =
 
     1     1     2     3     4     6     8     8     8     1
 
 
prc =
     1     2     3     4     6     8     1
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