close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1453 closed doubt (fixed)

Select en matrices — at Version 3

Reported by: imendez Owned by: Víctor de Buen Remiro
Priority: high Milestone: Mantainance
Component: Kernel Version: 3.1
Severity: normal Keywords:
Cc: atorre@…, optcob.banamx@…

Description (last modified by Víctor de Buen Remiro)

Hola,

Tengo una matriz colmuna que tiene omitidos. Me gustaría reducir la dimensión de esa matriz quedándome con las filas cuyo dato no es omitido. ¿Lo debo hacer con el paquete MatQuery? ¿Con qué función?

Más en general, ¿existe una función similar al Select de Set en ese paquete? Me refiero a que permita definir una condición de tipo Real para seleccionar los elementos.

Gracias.
Un saludo.

Change History (3)

comment:1 Changed 13 years ago by Víctor de Buen Remiro

(In [4205]) Refs #1453
Adding missed method SelectRowsFullKnown

comment:2 Changed 13 years ago by Víctor de Buen Remiro

(In [4206]) Refs #1453

comment:3 Changed 13 years ago by Víctor de Buen Remiro

Description: modified (diff)
Resolution: fixed
Status: newclosed

Efectivamente ese es el paquete que se ocupa de esas cosas, en particular, se precisa la versión MatQuery.3.4 para seleccionar datos no omitidos tal y como se ve en este ejemplo:

#Require MatQuery;

//Genero una matriz con un porcentage aproximado del 20% de omitidos
Real N = 100;
Matrix M = IfMat(LE(Rand(N,1,0,1),0.2),?,Rand(N,1,-10,10));
//Calculo los indices de filas con datos no omitidos
Set selKnown = MatQuery::SelectRowsFullKnown(Mat2VMat(M));
//Extraigo las filas con datos no omitidos
Matrix M.known = SubRow(M,selKnown);

Obsérvese que el paquete está diseñado para operar sobre VMatrix por lo que si se tiene una Matrix hay que convertirla primeo con Mat2VMat.

Para seleccionar las filas con un valor concreto se usaría MatQuery::SelectRowsWithValue y hay otros métodos de selección específicos para un conjunto de valores, para un rango, para un entorno hiperesférico o hipercúbico, etc.

Lo más sencillo es explorar el paquete en TolBase y mirar las descripciones en el inspector de objetos como en esta imagen

source:/tolp/trunk/tol_tests/tol/Bugzilla/bug_001453/MatQuery.Methods.png

Note: See TracTickets for help on using tickets.