2012-06-15 1 views
0

J'essaie de trouver quelque chose de similaire dans MATLAB à table.where de PyTables qui sélectionne un sous-ensemble d'un ensemble de données basé sur des critères (tels que col1 = 4). Jusqu'à présent, mes recherches ont été complètement infructueuses. Je ne peux pas croire qu'une telle fonctionnalité utile ne serait pas soutenue d'une façon ou d'une autre ... quelqu'un peut-il m'aider?PyTables table.where équivalent dans matlab

MATLAB ver R2011b.

EDIT: Dans le cas où la question ne ressort pas clairement, j'utilise un fichier HDF5 pour le stockage de données dans MATLAB, d'où mon désir de trouver une fonctionnalité similaire à PyTables.

+0

Comment charger que les fichiers au format HDF5 dans Matlab? – Oli

+0

@ uscere90: que recherchez-vous exactement, un [dataset] (http://www.mathworks.com/help/toolbox/stats/dataset.html) type dans MATLAB, ou un moyen de manipuler [HDF5] (http : //www.mathworks.com/help/techdoc/ref/hdf5.html) fichiers? – Amro

+0

@Amro Je suis à la recherche d'un moyen de manipuler les fichiers hdf5. Le fichier avec lequel je travaille est trop volumineux pour charger tout le contenu dans le RAM à la fois. J'attrape une partie contenant les données que je veux, et je la recherche une fois que matlab l'a en mémoire. J'espérais que je pourrais le faire avec plus d'élégance, une table de la pytables. Où cela renvoie juste vos données correspondantes tout de suite. – uscere90

Répondre

0

Je pense que ce que vous essayez de faire implique soit load -déposer le fichier en mémoire (ou vous pouvez essayer HDF5 Diskmap Class si c'est trop grand pour la mémoire).

Une fois que vous avez accès à vos données en Matlab comme une matrice, il est facile:

a=[ 
0 0 0 0 1; 
0 1 0 0 1; 
1 0 1 1 1; 
0 1 1 1 1; 
1 0 1 0 1]; 

a(find(a(:,1)==1),:) 
+0

En effet, c'est essentiellement ce que je fais maintenant. J'espérais qu'il y avait une fonction hdf5 qui ne retournerait que les données correspondantes, au lieu d'avoir à charger un grand gob qui est sûr de contenir les données que je veux, et ensuite chercher à travers pour le trouver. – uscere90

+0

Il semble que hdf5read peut lire une colonne de données. Cela devrait au moins réduire votre charge. Vous pouvez ensuite conserver les indices correspondant à vos critères et les charger ensuite. – jpjacobs