Matlab - como eliminar un porcentaje de elementos de un vector

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

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison (11 intervenciones) el 23/11/2016 01:14:27
tengo una matriz de datos que tiene alrededor de 3000 elementos, de los cuales hay muchos ceros. en otro foro indican como indican eliminar todos los ceros.

quiero saber si puedo eliminar un porcentaje de esos ceros y que a su vez sean equivalentes a los enteros positivos que se encuentran en el mismo vector.

Ejemplo.

A=[0 0 0 0 0 0 100 0 100 100 0 0 0 0 0]

quiero que quede la misma cantidad de ceros que de 100

A= [0 0 0 100 100 100]

la razon de la pregunta es que debo hacer un balanceo de los datos lo cual segun entiendo es mantener la misma cantidad de valores de cero y cien

nose si sea posible.


agradezco cualquier aporte
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por Royeth (1818 intervenciones) el 23/11/2016 01:47:41
1
2
3
a=[0 0 5 -2 1 3.4 0 0];
a(randsample(find(a==0),length(a(a==0))-length(a(and(round(a)==a,a>0)))))=[];
disp(a)

aquí te quedan dos ceros porque ignora el dos que es negativo y el número que no es entero , creo que era lo que querías , además la eliminación como tiene varias posibilidades la coloqué random , elimina dos ceros de esos 4 con la misma probabilidad

saludos
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
3
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison (11 intervenciones) el 23/11/2016 02:15:22
muchas gracias royeth, funciona excelente
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

como eliminar un porcentaje de elementos de un vector

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/11/2016 02:16:19
1
2
3
4
5
clear all
A=[0 0 0 0 0 0 100 0  0 0 0 0 0 100 100 0 0 0 100 0 0];
f=find(A==100);
t=find(A==0);
A(t(1:end-length(f)))=[]

1
2
3
4
5
6
7
8
9
10
11
EJECUCION
>> equilibrar
 
A =
 
     0     0     0     0     0     0   100     0     0     0     0     0     0   100   100     0     0     0   100     0     0
 
 
A =
 
   100   100   100     0     0   100     0     0

Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
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: 27
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison muñoz (11 intervenciones) el 23/11/2016 04:16:53
jose jeremias muchas gracias, funciona muy bien
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: 27
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison muñoz (11 intervenciones) el 23/11/2016 05:23:04
buenas noches jose

si tengo dos vectores

A=[0 0 0 0 0 0 100 0 0 0 0 0 0 100 100 0 0 0 100 0 0];
B=[0 0 0 0 0 -20 0 0 0 0 0 0 -20 0 0 ];

le aplica el comando que me indicas a cada vector. y funciona perfecto. el resultado seria dos vectores de dimensiones distintas. si yo quisiera unir esos dos vectores en una matriz y los valores faltantes rellenarlos con ceros o con algún otro valor se podría 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: 27
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison muñoz (11 intervenciones) el 23/11/2016 05:23:36
buenas noches royeth

si tengo dos vectores

A=[0 0 0 0 0 0 100 0 0 0 0 0 0 100 100 0 0 0 100 0 0];
B=[0 0 0 0 0 -20 0 0 0 0 0 0 -20 0 0 ];

le aplica el comando que me indicas a cada vector. y funciona perfecto. el resultado seria dos vectores de dimensiones distintas. si yo quisiera unir esos dos vectores en una matriz y los valores faltantes rellenarlos con ceros o con algún otro valor se podría 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
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

como eliminar un porcentaje de elementos de un vector

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 23/11/2016 13:33:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear all
A=[0 0 0 0 0 0 100 0  0 0 0 0 0 100 100 0 0 0 100 0 0];
fA=find(A==100);
tA=find(A==0);
A(tA(1:end-length(fA)))=[]
 
B=[0 0 0 0 0 -20 0 0 0 0 0 0 -20 0 0 ];
fB=find(B==-20);
tB=find(B==0);
B(tB(1:end-length(fB)))=[]
 
t=max([length(A) length(B)]);
if t==length(A)
    B(end+1: t)=0;
else
    A(end+1: t)=0;
end
T=[A; B]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>> equilibrar1
 
A =
 
   100   100   100     0     0   100     0     0
 
 
B =
 
   -20   -20     0     0
 
 
T =
 
   100   100   100     0     0   100     0     0
   -20   -20     0     0     0     0     0     0





Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

como eliminar un porcentaje de elementos de un vector

Publicado por jhon edison (11 intervenciones) el 23/11/2016 19:15:28
Muchas gracias jose eres el mejor. gracias me ayudaste mucho
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