WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

cell array in struct array als neues Feld hinzufügen?

 

hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 09:40     Titel: cell array in struct array als neues Feld hinzufügen?
  Antworten mit Zitat      
Hi,
wie kann ich ein cell array als neues Feld zu einen struct array hinzufügen?

Code:
A = struct('a', {1, 2, 3, 4});
B = {'A', 'B', 'C', 'D'};


C soll in das struct array A als Feld 'b' hinzugefügt werden ...


hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 09:42     Titel:
  Antworten mit Zitat      
ups ... natürlich ...
B soll in das struct array A als Feld 'b' hinzugefügt werden ...
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2013, 10:24     Titel:
  Antworten mit Zitat      
Code:
A=setfield(A,{1},'b',B);
so sollte es gehen glaub ich
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2013, 10:25     Titel: Re: cell array in struct array als neues Feld hinzufügen?
  Antworten mit Zitat      
Hallo hal,

Wie sieht der der gewünschte Output aus?
Code:
A = struct('a', {1, 2, 3, 4});

Dies erzeugt ja ein Struct-Array und keinen skalaren Struct.
Sollen dann alle Elemente von A ein Feld b mit dem Inhalt {'A', 'B', 'C', 'D'} bekommen, oder nur das erste Element, während die anderen dann das Feld als leere Matrix [] enthalten?

Oder möchtest Du einen skalaren Struct A erstellen?
Dann müsstest Du schreiben:
Code:
A = struct('a', {{1, 2, 3, 4}}, 'b', {{'A', 'B', 'C', 'D'}});

% Oder:
A.a = {1,2,3,4};
A.b = {'A','B','C','D'};

Hast Du schon die Hilfe-Texte zu "STRUCT" gelesen? Dort wird beides ausführlich erklärt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 11:23     Titel:
  Antworten mit Zitat      
schon so ...

Code:
A = struct('a', {{1, 2, 3, 4}}, 'b', {{'A', 'B', 'C', 'D'}});


allerdings was ist wenn ich eine bestehendes struct array habe von dem ich nicht die Anzahl und Namen der Felder kenne. Natürlich könnte ich diese Auslesen und per Schleife mit 'struct{...' wieder zusammenfügen + mein neues Feld wieder zusammenfügen. Aber ich möchte eben etwas zu einen bestehenden struct array hinzufügen.
Gibt es nicht einfach sowas wie 'setfield' mit dem ich das Ganze in einer Zeile erledigen kann?

Zitat:
Hast Du schon die Hilfe-Texte zu "STRUCT" gelesen? Dort wird beides ausführlich erklärt.

sonst würde ich hier nicht schreiben ... Confused
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.07.2013, 11:34     Titel:
  Antworten mit Zitat      
was funktioniert denn nicht mit den oben genannten möglichkeiten ? was hast du versucht und was entspricht nicht deinem erwartetem ergebniss ?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.07.2013, 11:45     Titel:
  Antworten mit Zitat      
Hallo

Natürlich kannst du zu Bestehenden Struct neue Felder ohne Probleme einfügen siehe doch was Jan bereits vorgeschlagen hatte:

Value Struct kann man ohne Probleme, um eine beliebige Anzahl der Felder erweitern
Code:

A = struct('a', {{1, 2, 3, 4}});
% und so um weitere Felder erweitern
A.b = {'A','B','C','D'};  
A.c  = 'noch ein Feld'
A.d = 'und ein weiteres Feld'
% usw.
 
Private Nachricht senden Benutzer-Profile anzeigen
 
hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 13:41     Titel:
  Antworten mit Zitat      
Es geht um ein 'struct array' !!!

Code:
A = struct('a', {1, 2, 3, 4});
B = {'A', 'B', 'C', 'D'};


Also nochmal...
Wie füge ich B zu A als Feld mit Namen 'b'?

und bitte nicht
struct('a', {1, 2, 3, 4}, 'b', {'A', 'B', 'C', 'D'})
!!!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2013, 13:47     Titel:
  Antworten mit Zitat      
Hallo hal,

Mir wird die Frage nicht ganz klar. Wie wäre es damit:
Code:
A = struct('a', {{1, 2, 3, 4}});
A.b = {'A', 'B', 'C', 'D'};

% Oder falls der Feldname in einer Variablen gespeichert ist:
Name = 'b';
A.(Name) = {'A', 'B', 'C', 'D'};


Zitat:
Zitat:
Hast Du schon die Hilfe-Texte zu "STRUCT" gelesen? Dort wird beides ausführlich erklärt.

sonst würde ich hier nicht schreiben ... :?

Da muss ich jetzt grübeln, was das genau bedeutet. Heißt das "ja, sonst würde ich hier nicht schreiben" oder "nein, sonst würde ich hier nicht schreiben"? ;-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 14:08     Titel:
  Antworten mit Zitat      
was ich meine ist nicht
A = struct('a', {{1, 2, 3, 4}});
sondern
A = struct('a', {1, 2, 3, 4});

und dann {'A', 'B', 'C', 'D'} als neues Feld 'b' hinzufügen Wink
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 02.07.2013, 14:28     Titel:
  Antworten mit Zitat      
hal hat Folgendes geschrieben:
schon so ...


Code:
A = struct('a', {{1, 2, 3, 4}}, 'b', {{'A', 'B', 'C', 'D'}});



Dann hast mit der Antwort aber uns verwirrt

so geht das für Struct Array

Code:

A= struct('a',{1,2,3,4})
B = {'A', 'B', 'C', 'D'}
[A.b] = deal(B{:})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2013, 14:38     Titel:
  Antworten mit Zitat      
Hallo hal, hallo denny,

Ich vermute, Dennys Lösung ist die gesuchte. Aber "als neues Feld b" wäre immer noch verwirrend. Das würde dann besser heißen: "als neue Felder B die Elemente des Cells {'A', 'B', 'C', 'D'} hinzufügen".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2013, 14:40     Titel:
  Antworten mit Zitat      
thanks a lot! Very Happy
und sorry für das

Code:
A = struct('a', {{1, 2, 3, 4}}, 'b', {{'A', 'B', 'C', 'D'}});


die Klammern hab ich übersehen Wink
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.