1 votes

tableau de chaînes de cellules vers une structure matlabique

Je dois créer une structure matlab comme suit ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}}) qui stocke comme un tableau de structure 1x2 avec un nom de champ. Un appel à ds.name génère la sortie :

ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'

Veuillez noter les guillemets simples dans la sortie. Ils sont importants. Cela dit, je dois créer la structure mentionnée ci-dessus en utilisant la variable suivante : X = [1x46 char] [1x47 char] c'est-à-dire une cellule 1x2, qui, je crois, est en fait un tableau de cellules de chaînes de caractères. J'ai notamment essayé ce qui suit :

Y = cell2struct(X, 'name', 1)'

qui résulte en un tableau de structure 1x2 avec des champs nommés, cependant un appel à Y génère la sortie :

Y.name
ans = my_name_is
ans = matlab_thining_hair

Notez que les guillemets simples manquent dans la sortie, et bien que Y et ds soient des tableaux structurés 1x2 avec des noms de champs, les valeurs des champs ne sont pas formatées de la même manière et les structures varient également dans leur taille en octets. Essentiellement, ce dont j'ai besoin est une structure avec des champs de tableaux de cellules, où chaque tableau de cellules est constitué d'un tableau de caractères unique. Je ne sais pas comment formater les valeurs des champs sous forme de tableaux de caractères. Toute aide serait la bienvenue.

1voto

Chogg Points 238

La divergence dans votre exemple est que chaque élément de votre exemple original ds.name est une cellule contenant un caractère (par exemple {'mon nom est'}), alors que chaque élément de X est un caractère (par exemple 'mon nom est'). Si vous changez le type de chaque élément de X d'un caractère à une cellule contenant un caractère, vous devriez obtenir le comportement que vous recherchez.

C'est ce que montre l'exemple ci-dessous.

X2={{mon_nom_is'},{'matlab_thinning_hair'}} ;

Y = cell2struct(X2, 'name', 1) ;

Y.nom

ans =

mon_nom_est

ans =

'matlab_thinning_hair' (cheveux fins)

Vous pouvez réaliser ceci pour votre variable X en indexant les éléments et en effectuant :

X2{1}={X{1}} ;

X2{2}={X{2}}

L'aide de matlab aquí est très utile sur ce sujet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X