Ich muss eine Matlab-Struktur wie diese erstellen, ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})
die als 1x2-Strukturarray mit einem Feldnamen gespeichert wird. Ein Aufruf von ds.name
generiert die Ausgabe:
ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'
Bitte beachten Sie die einfachen Anführungszeichen in der Ausgabe. Sie sind wichtig. Allerdings muss ich die oben erwähnte Struktur mit der folgenden Variable erstellen: X = [1x46 char] [1x47 char]
d. h. 1x2 Zelle, die meiner Meinung nach eigentlich ein Zellenarray aus Zeichenfolgen ist. Unter anderem habe ich Folgendes versucht:
Y = cell2struct(X, 'name', 1)'
Dies führt zu einem Array mit 1x2-Struktur und Feldnamen. Ein Aufruf von Y erzeugt jedoch die Ausgabe:
Y.name
ans = my_name_is
ans = matlab_thining_hair
Beachten Sie, dass die einfachen Anführungszeichen in der Ausgabe fehlen, und obwohl sowohl Y als auch ds 1x2-Strukturarrays mit Feldnamen sind, sind die Feldwerte nicht gleich formatiert und die Strukturen unterscheiden sich auch in ihrer Bytegröße. Im Wesentlichen brauche ich eine Struktur mit Feldern aus Zellarrays, wobei jedes Zellarray im Wesentlichen aus einem eindeutigen Zeichenarray besteht. Ich weiß nicht, wie ich die Feldwerte als Zeichenarrays formatieren soll. Für jede Hilfe wäre ich sehr dankbar.
Antwort1
Die Diskrepanz in Ihrem Beispiel besteht darin, dass jedes Element Ihres ursprünglichen Beispiels ds.name eine Zelle ist, die ein Zeichen enthält (z. B. {'mein Name ist'}), während jedes Element von X ein Zeichen ist (z. B. 'mein Name ist'). Wenn Sie den Typ jedes Elements von X von einem Zeichen in eine Zelle ändern, die ein Zeichen enthält, sollten Sie das gewünschte Verhalten erhalten.
Dies wird im folgenden Beispiel gezeigt.
X2={{'mein_name_ist'},{'matlab_thinning_hair'}};
Y = Zelle2Struktur(X2, 'Name', 1);
Y.Name
Antwort =
'ich heiße'
Antwort =
„matlab_dünnes_Haar“
Sie können dies für Ihre Variable X erreichen, indem Sie die Elemente indizieren und Folgendes ausführen:
X2{1}={X{1}};
X2{2}={X{2}}
Die Matlab-HilfeHierist zu diesem Thema sehr hilfreich.