Argument à la dynamique de la structure de référence doit correspondre à un nom de champ valide
J'obtiens cette erreur "Argument à la dynamique de la structure de référence doit correspondre à un nom de champ valide."
J'ai une structure appelée spectData et il semble que ce
spectData{1} =
data: [256x26 double]
textdata: {1x26 cell}
colheaders: {1x26 cell}
Row: [256x1 double]
Col: [256x1 double]
Cho: [256x1 double]
Cho0x25SD: [256x1 double]
Cho0x2FCit: [256x1 double]
PCho: [256x1 double]
PCho0x25SD: [256x1 double]
J'ai essayer et en l'attribuant à un appel de fonction, la ligne de code qui ressemble à ça. C'est la ligne de code matlab dit l'erreur est à.
SDdata = spectData{sliceNum - firstSlice}.(MetabMapSDString);
où metabString est une chaîne de caractères de l'un des noms, par exemple "PCho0x25SD' spectData a 4 sous-structures dans le total de tous comme celui-ci j'ai affiché. Ce que je fais mal?? C'est un double, donc ça devrait être ok je pensais.
Ne
De ce que j'ai cabine dire après vérification il n'y a pas de fautes de frappe. Pour une raison que maintenant, l'erreur ne se produit pas.
L'erreur semble être incompatible. Je ne peux pas semblent le faire se produire à nouveau et je n'ai pas changer quoi que ce soit.
Félicitations alors. Vais garder mes doigts croisés pour que l'erreur ne se reproduise pas.
Ajouter un bloc try/catch, et à chaque fois que l'erreur se produit à examiner MetabMapSDString ET le domaine de la struct. Aussi, puisque vous êtes le stockage de la structure dans une CELLULE de TABLEAU, les champs peuvent ne pas être cohérent dans la struct vous êtes d'indexation. Seulement un tableau de structures est la garantie d'avoir une structure cohérente.
MetabMapSDString
contiennent toujours valide fieldnames? Avez-vous vérifier les fautes de frappe?De ce que j'ai cabine dire après vérification il n'y a pas de fautes de frappe. Pour une raison que maintenant, l'erreur ne se produit pas.
L'erreur semble être incompatible. Je ne peux pas semblent le faire se produire à nouveau et je n'ai pas changer quoi que ce soit.
Félicitations alors. Vais garder mes doigts croisés pour que l'erreur ne se reproduise pas.
Ajouter un bloc try/catch, et à chaque fois que l'erreur se produit à examiner MetabMapSDString ET le domaine de la struct. Aussi, puisque vous êtes le stockage de la structure dans une CELLULE de TABLEAU, les champs peuvent ne pas être cohérent dans la struct vous êtes d'indexation. Seulement un tableau de structures est la garantie d'avoir une structure cohérente.
OriginalL'auteur Ben Fossen | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Matlab peut parfois trompeuses message d'erreur lorsque vous avez accidentellement passer d'une cellule de tableau au lieu d'une chaîne. L'exemple suivant donne la même erreur:
Si c'est votre problème (essai du type réel de votre nom de domaine avec par exemple
whos
), il doit aider à diref = char(f)
.f=f{:}
ouf=f{1}
fonctionne aussi, vous ne savez pas si il n'y a aucun avantage particulier à l'autre. +1L'avantage de
char
est que vous pouvez fairechar(f(1))
, mais pasf(1){1}
OriginalL'auteur quazgar
Une chaîne de caractères est représentée dans matlab cellulaire. alors que les chaînes littérales sont de type char tableau.
Ils s'imprime de manière différente. Une cellule de la chaîne de tirages
tandis que régulier char tableau affiche
En vient maintenant à la différence des deux fonctions internes:
cellstr
convertit char tableau de string tout enchar
convertit une cellule de la chaîne de char tableau.Donc dans votre cas, vous devez utiliser
char(MetabMapSDString)
que votre dynamique de la structure de référence.OriginalL'auteur Chivalryman