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

Struktur oder Klasse

 

123abc
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2015, 11:21     Titel: Struktur oder Klasse
  Antworten mit Zitat      
Hallo Leute,
ich weiß gerade nicht weiter. Ich hatte eigentlich vor structs zu erstellen brauche aber mehrere mit der Form Objekt(i)=..., hab es aber nicht hinbekommen Sie zu erstellen. Ich habe es mit einer for-Schleife versucht, hab hier aber gelesen das es so auch nicht geht. Am Anfang meines Programms wird eingegeben wie viele structs es geben soll und im laufe des Programms füllen und ändern Sie sich. Ein struct soll wie folgt aussehen:
Objekt(1)=struct(Variable, Vektor, Vektor, Variable, Variable, Vektor, Variable)
(Ich weiß das es nicht die korrekte Syntax ist, ich will damit nur zeigen welche Datentypen ich brauche)
Nun zur meiner Frage, ich bin nicht sicher ob es besser ist ein struct oder doch eine Klasse zu erstellen, vielleicht könnt Ihr mir weiterhelfen. Ich muss dazu sagen, dass ich nicht gut im Programmieren bin und nicht sicher bin, ob es für mich vielleicht zu kompliziert ist eine Klasse zu erstellen.
Ich hab auch im Netzt nicht wirklich Infos gefunden, wofür man genau struct oder class benutzt, deswegen bin ich gerade etwas ratlos.
Vielleicht kann mir jemand sagen was für mein Programm besser ist?
Vielen Dank im voraus und liebe Grüße
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: 25.11.2015, 12:16     Titel: Re: Struktur oder Klasse
  Antworten mit Zitat      
Hallo 123abc,

Zitat:
Ich hatte eigentlich vor structs zu erstellen brauche aber mehrere mit der Form Objekt(i)=..., hab es aber nicht hinbekommen Sie zu erstellen.

Bitte poste den Code und erkläre, was genau nicht so funktioniert wie beabsichtig. Bekommst Du eine Fehlermeldung oder weicht das Ergebnis von den Erwartungen ab?

Zitat:
Objekt(1)=struct(Variable, Vektor, Vektor, Variable, Variable, Vektor, Variable)
(Ich weiß das es nicht die korrekte Syntax ist, ich will damit nur zeigen welche Datentypen ich brauche)

Ich kann nicht erraten, was diese Schreibweise bedeutet, da es keine valide Matlab-Syntax ist. Vektoren sind ja ebenfalls Varaiblen in Matlab.

Ich sehe bisher nichts, was gegen struct's spricht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
123abc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2015, 12:28     Titel:
  Antworten mit Zitat      
Hallo Jan,
Ich hab es wie folgt versucht:
Code:

for i=1:AnzBienen   % hier ist AnzBienen=20
   
Biene(i)=struct('status',status(i),'BinVektor',BinVektor(i),'KundenVektor',KundenVektor(i),...
   'Kosten',Kosten(i),'X',X(i),'vorher_BinVektor',vorher_BinVektor(i),'vorher_Kosten',vorher_Kosten(i));
end
 

und hab die Fehlermeldung: Index exceeds matrix dimensions.

Zum aussehen der Structs:
Ich brauche bei einigen Variablen(wie Status oder Kosten) halt nur einen Wert pro struct und bei anderen(wie BinVektor oder KundenVektor) ist es ein Vektor und ich weiß nicht wie genau das Unterschieden wird. Bei meinem Beispielcode hat jetzt beides die selbe Form.
Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.11.2015, 13:10     Titel:
  Antworten mit Zitat      
Hallo,

das bedeutet, dass min. eine der Variablen eben keine 20 Elemente hat. Ein Blick in den Workspace Browser dürfte helfen, diese Variablen zu identifizieren.
Wenn für ein Feld immer derselbe Wert genommen werden soll, dann das (i) hinter der Variable weglassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
123abc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2015, 13:47     Titel:
  Antworten mit Zitat      
Hallo,
die Variablen selber sollen auch gar keine 20 Elemente haben, sonder ich möchte 20 structs bekommen. Die Variablen sind zu diesem Zeitpunkt noch alle leer, die werden erst danach Initialisiert. Und im Workspace steht bei den Variablen nur der Name, also zum Beispiel: Status 'Status'
Liebe Grüße
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: 25.11.2015, 17:04     Titel:
  Antworten mit Zitat      
Hallo 123abc,

In Deinem Code:
Zitat:
Code:
for i=1:AnzBienen
Biene(i) = struct('status',status(i), 'BinVektor',BinVektor(i), ...
                         'KundenVektor',KundenVektor(i),...
                         'Kosten',Kosten(i),'X',X(i), ...
                         'vorher_BinVektor',vorher_BinVektor(i), ...
                         'vorher_Kosten',vorher_Kosten(i));
end

wird ganz klar auf die Variablen wie "BinVektor(i)" zugegriffen. Falls diese Variablen aber noch gar nicht existieren, was soll BinVektor(i) dann sein?!

Vielleicht meinst Du:
Code:
for i=1:AnzBienen
Biene(i) = struct('status', [], 'BinVektor', [], ...
                         ... usw
end

?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2024 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.