Retrait de vide champs de structure Matlab
Je suis confronté au problème suivant: j'ai un tableau de structures comme:
A.B(1,1).x = 'string'
A.B(1,1).y = 12
A.B(1,2).x = []
A.B(1,2).y = []
A.B(1,3).x = 'string2'
A.B(1,3).y = 4
Et je voudrais supprimer le vide 2. ligne à partir de cette structure, de sorte qu'à la fin, je reçois des champs (1,1) et (1,3).
J'ai essayé de convertir les cellules, supprimer et puis retour à la structure, mais de cette façon, j'ai dû retaper les noms de champs.
Comment est-il possible de le faire? Peut-il être fait sans la conversion de structures?
tia!
OriginalL'auteur beginh | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
Utilisation d'une boucle ou d' arrayfun pour déterminer les éléments du tableau sont vides:
retourne:
[0 1 0]
ou
qui vérifie si tous les champs sont vides (utiliser tout au lieu de tous de vérifier si un élément est vide au lieu de tous).
Puis les retirer à l'aide de logique d'indexation:
Complète de la solution à votre problème dans les commentaires:
exécuter ce code, étape par étape, et d'analyser l'intermédiaire des variables pour comprendre ce qui se passe. Il devrait être assez clair.
peut-être que structfun est applicable...
en fait je pensais à la suivante, que j'ai au premier A. B l'ensemble des données. j'applique ensuite une condition pour A. B.().y > 3 et, dans l'affirmative enregistrer dans une nouvelle structure, à partir de laquelle j'ai eu ce vide A. B.(1,2) (disons A. B.(1,2).y = 2). est-il peut-être une meilleure façon d'éviter les champs vides dans la structure à la fois?
le problème est de comparer un nombre avec un champ vide permettra d'obtenir un résultat vide. Je vous suggérons d'abord de filtrage de l'vides, et ensuite l'appliquer à votre condition.
Je ne suis pas sûr si je comprends bien, mais si oui, alors .. champs vides sont l'effet de l'application de mon état. Avant que tous les champs ont des valeurs, et en raison du fait 2<3 j'ai eu des champs vides.
OriginalL'auteur Gunther Struyf