Werte von Structs festlegen
looo
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 11:38
Titel : Werte von Structs festlegen
Hallo,
ist es möglich mehrere Feld von Structs direkt festzulegen?
so mache ich das mit einer Schleife:
auslesen kann ich alle auf einmal:
aber die Zuweisung funktioniert so nicht:
Gibt einen Befehl mit dem ich alle Felder eines Structs direkte mit einer Konstante belegen kann?
Vito
Forum-Guru
Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
Verfasst am : 12.08.2010, 11:58
Titel :
Hi,
meinst du sowas:
Gruß,
Vito
Fourier
Forum-Guru
Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
Verfasst am : 12.08.2010, 12:23
Titel :
Hi,
oder meint er vlt das hier:
gruss
_________________ Ein schlechter General ist besser als zwei gute.
looo
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 12:57
Titel :
Fourier hat Folgendes geschrieben:
Hi,
oder meint er vlt das hier:
gruss
Super, genau das meinte ich. "repmat" kannte ich noch nicht.
looo
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 13:09
Titel :
noch was:
Ist es möglich anstatt dem Struct A(1:10).a eine Konstante zuzuweisen, auch einen Vektor zuzuweisen, so dass:
mit einem beliebigen Vektor V.
Kann man das ohne Schleife realisieren? Mit repmat habe ich das nicht geschafft.
looo
Forum-Newbie
Beiträge: 7
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 13:17
Titel :
So hab mich mal registriert, da man seine Posts als Gast nicht editieren kann:
Ich habe ein weiteres Problem:
Wenn ich mehrere Felder (A.a, A.b, A.c) in meinem Struct "A" habe und die Felder (A.a und A.b) wie folgt ändern möchte:
funktioniert das nicht mit dem Befehl "repmat", denn A=repmat(...) löscht die existierenden Felder von A.
Gibt es ne andere Lösung?
Vito
Forum-Guru
Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
Verfasst am : 12.08.2010, 14:14
Titel :
Hi,
das kannst du auch ohne Schleife
Gruß,
Vito
looo
Forum-Newbie
Beiträge: 7
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 14:20
Titel :
Nein das funktioniert nicht, bzw. ist nicht das was ich meine.
Schau dir mal folgendes Ergebnis an (Copy&Past in Matlab):
Das möchte ich ohne Schleife realisieren, so dass ein anderes existierendes Feld A.c nicht verändert wird.
Vito
Forum-Guru
Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
Verfasst am : 12.08.2010, 14:45
Titel :
Hi,
ich verstehe Dich nicht der Unterschied ist doch nur, dass es bei dir 10-Zeilen, aber egal. Schau Dir das an.
Machmal bitte jetzt Du (Copy/Paste)
Gruß,
Vito
looo
Forum-Newbie
Beiträge: 7
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 15:01
Titel :
Habs gemacht => gibt aber nicht das gewünschte Ergebnis (trotzdem Danke für die Rückmeldung )
Der Unterschied zwischen Deinem Vorschlag und meinem gewünschten Ergebnis ist folgender:
Bei Dir ist ein 10x1 Vektor im Feld A(1).a.
Die Felder A(2:10).a sind leer.
Bei meinem struct soll in jedes Feld genau eine Zahl und das struct "A" soll 1x10 sein.
d.h.
Das macht einen Unterschied !!!
Fourier
Forum-Guru
Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
Verfasst am : 12.08.2010, 15:23
Titel :
Hallo,
das Feld a kannst du zumindest so verändern:
gruss
_________________ Ein schlechter General ist besser als zwei gute.
Jan S
Moderator
Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
Verfasst am : 12.08.2010, 15:56
Titel : Re: Werte von Structs festlegen
Hallo looo,
Wenn das sehr häufig gebraucht wird, lohnt es sich eine Kopie von DEAL zu erstellen, die nur die erforderlichen Checks durchführt.
Gruß, Jan
looo
Forum-Newbie
Beiträge: 7
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 16:06
Titel :
Danke. Die konstante Zuweisung ist abgehakt.
Gibt ne Lösung für die Zuweiung eines Vektors in die Felder (A.b):
Vito
Forum-Guru
Beiträge: 315
Anmeldedatum: 02.11.09
Wohnort: Stuttgart
Version: ---
Verfasst am : 12.08.2010, 16:08
Titel :
Hi,
vielleicht kommst du hiermit weiter:
Code:
c = { 5 ,5 ,5 ,5 ,5 ,5 ,5 ,5 ,5 ,5 ;1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 } ';
fields = { 'a ', 'b '} ;
A = cell2struct ( c, fields, 2 ) ';
A.a ;
A.b
bekommst das was du willst denke ich ohne Schleife.
Gruß,
Vito
PS: machmal (Copy/Paste)
looo
Forum-Newbie
Beiträge: 7
Anmeldedatum: 12.08.10
Wohnort: ---
Version: ---
Verfasst am : 12.08.2010, 16:10
Titel :
Perfekt Vito.
wobei ein Haken gibts noch: bei einem existierenden Struct klappt das nicht direkt.
ABER:
Code:
A = struct ( 'a ', cell ( 1 , 10 ) ) ;
[ A.a ] = deal( 1 ) ;
% neues Struct mit dem neuen Feld:
b = { 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 } ';
fields = { 'b '} ;
B = cell2struct ( b, fields, 2 ) ';
% Felder von Struct B in Struct A kopieren:
[ A.b ] =B.b ;
Einstellungen und Berechtigungen
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
| 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.