Subconjunto de un vector de índices menos ciertos valores ¿con 'datasample'?
Publicado por Aitor (49 intervenciones) el 13/01/2017 14:10:10
Buenas tardes,
Tras mucho darle al coco, creo que he conseguido llegar al fin a una solución para mi otro hilo (http://www.lawebdelprogramador.com/foros/Matlab/1582663-Rellenado-de-una-matriz-con-unos-a-partir-de-sus-distribuciones.html).
Sin embargo, antes necesito resolver una última duda.
Supongamos que tenemos un vector de 50 valores naturales, tales como:
Necesitaría de la manera más simple y con menos líneas de código posible construir un subconjunto con aquellos índices de este vector b cuyos valores sean distintos de cero.
(Realmente los parámetros 'Replace' y 'false' no son necesarios para este caso ya que tratándose de un vector de índices estaba claro
He pensado en usar la función datasample para este propósito.que no habría repetición).
Sin embargo, este método no tiene en cuenta aquellos índices para cuyo elemento pudiera valer 0. En tal caso, ese índice debe seguir contando a pesar de no seguir siendo seleccionable. Es decir, si tuviéramos:
b = [1, 4, 5, 2, 0, 9]
El elemento '6' (correspondiente al último índice de b) debería seguir poder siendo seleccionable para cualquier subconjunto. Es decir, no vale con quitar los 0 de b, ya que entonces cambiarían todas las posiciones de los índices y esa situación no es deseable.
¿Alguien tiene alguna solución?
¡Muchas gracias de nuevo de antemano, y ojalá podamos salir de dudas pronto!
Tras mucho darle al coco, creo que he conseguido llegar al fin a una solución para mi otro hilo (http://www.lawebdelprogramador.com/foros/Matlab/1582663-Rellenado-de-una-matriz-con-unos-a-partir-de-sus-distribuciones.html).
Sin embargo, antes necesito resolver una última duda.
Supongamos que tenemos un vector de 50 valores naturales, tales como:
b = [2, 2, 3, 4, 5, 6, 4, 2, 1, 5, 6, 7, 8, 9, 9, 10, 10 10, (...), 38]
(por ejemplo)Necesitaría de la manera más simple y con menos líneas de código posible construir un subconjunto con aquellos índices de este vector b cuyos valores sean distintos de cero.
1
c = datasample(1:length(b), {longitud de la secuencia de índices que desee obtener}, 'replace', 'false');
He pensado en usar la función datasample para este propósito.que no habría repetición).
Sin embargo, este método no tiene en cuenta aquellos índices para cuyo elemento pudiera valer 0. En tal caso, ese índice debe seguir contando a pesar de no seguir siendo seleccionable. Es decir, si tuviéramos:
b = [1, 4, 5, 2, 0, 9]
El elemento '6' (correspondiente al último índice de b) debería seguir poder siendo seleccionable para cualquier subconjunto. Es decir, no vale con quitar los 0 de b, ya que entonces cambiarían todas las posiciones de los índices y esa situación no es deseable.
¿Alguien tiene alguna solución?
¡Muchas gracias de nuevo de antemano, y ojalá podamos salir de dudas pronto!
Valora esta pregunta
0