Bonjour,
je voudrais créer un tableau vide de 96 struct :<1x96 struct>
Or zeros ne marche pas avec struct
Merci !
Version imprimable
Bonjour,
je voudrais créer un tableau vide de 96 struct :<1x96 struct>
Or zeros ne marche pas avec struct
Merci !
Ce n'est pas très clair.
Soit ta structure est vide (donc 0*0) soit ta structure a une taille et donc elle n'est pas vide.
Tu veux mettre quoi dans ta structure ?
Pourquoi souhaites-tu faire ça ? (préallocation ?)
Une solution possible est d'utiliser CELL pour l'initialisation:
Code:
1
2 struct('toto',cell(1,96));
En fait je lis en boucle des metadata de fichiers DICOM via la fonction dicominfo() et je les range dans un tableau
Je voudrais créer un tableau infoIm contenant nbIm valeurs allouées pour ranger des structCode:
1
2
3
4 for i=1:nbIm infoIm(i)=dicominfo(sprintf('image%03d.dcm',i)); end
Dans ce cas avec REPMAT mais je vois pas bien l'intérêt :?
Code:repmat(struct(),1,96)
Eh bien MatLab me dit "consider preallocating for speed"
Il n'a pas tort : on dit toujours et le M-Lint le dit aussi qu'il faut pré-allouer les variables (surtout quand il y a le risque "might be growing..."),
donc bon élève il le fait ;)
Sauf que dans le cas d'une structure, c'est pas forcément intéressant je pense, à moins de la définir avec ses champs : ce que tu ne fais pas....
Ce sont des header dicom remplis de dizaines de champs....
Ben si nbIm est élevé ce que tu peux faire (mais il ne faut pas toujours écouté ce que dit MATLAB :aie:) c'est :
Mais c'est bien capillotracté :aie:Code:
1
2
3
4
5
6
7
8
9 infoIm1 = dicominfo('image01.dcm'); f = fieldnames(infoIm1); infoIm = infoIm1; infoIm.(f{1})={};%si je n m'abuse ça rendra vie, ou peut-être avec []...ou '' ... infoIm = repmat(infoIm,1,nbIm); infoIm(1)=infoIm1; for i=2:nbIm infoIm(i)=dicominfo(sprintf('image%03d.dcm',i)); end
euh, si je puis me permettre, je pense que ca va rallonger le temps d'éxécution du programme alors que là il râle dans l'editor mais s'éxécute sans broncher !
Au pire j'ai 400 images pour le moment.... donc ca passe :)
Un peu de (très bonne) lecture : Structure Initialization (Loren on the Art of MATLAB)