Zellarray von Strings zur Matlab-Struktur

1

Ich muss eine Matlab-Struktur als solche erstellen, ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})die als 1x2-Strukturarray mit einem Feldnamen gespeichert wird. Ein Aufruf zum ds.nameErzeugen der Ausgabe:

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

Bitte beachten Sie die einfachen Anführungszeichen in der Ausgabe. Sie sind wichtig. Das heißt, ich muss die oben erwähnte Struktur unter Verwendung der folgenden Variablen erstellen: X = [1x46 char] [1x47 char]dh 1x2-Zelle, von der ich glaube, dass sie tatsächlich ein Zellenarray von Zeichenfolgen ist. Unter anderem habe ich Folgendes versucht:

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

Dies führt zu einem 1x2-Strukturarray mit dem Feldnamen. Ein Aufruf von Y generiert jedoch die Ausgabe:

Y.name
ans = my_name_is
ans = matlab_thining_hair

Beachten Sie, dass die einfachen Anführungszeichen in der Ausgabe fehlen. Obwohl sowohl Y als auch d 1x2-Strukturarrays mit Feldnamen sind, sind die Feldwerte nicht gleich formatiert und die Strukturen variieren auch in ihrer Bytegröße. Im Wesentlichen benötige ich eine Struktur mit Feldern von Zellenarrays, wobei im Wesentlichen jedes Zellenarray aus einem eindeutigen Zeichenarray besteht. Wie formatiere ich die Feldwerte als Zeichenarrays? Jede Hilfe wäre sehr dankbar.

Kambiz
quelle

Antworten:

1

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 = {{'my_name_is'}, {'matlab_thinning_hair'}};

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

Y.name

ans =

'mein Name ist'

ans =

'matlab_thinning_hair'

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-Hilfe hier ist zu diesem Thema sehr hilfreich.

Chogg
quelle