Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Chemische Reaktionstechnik mit MATLAB und Simulink

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Was passiert im Code bei der Objekterzeugung

 

Helmut_Kern
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 07.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2020, 11:03     Titel: Was passiert im Code bei der Objekterzeugung
  Antworten mit Zitat      
Hallo,

ich habe folgenden Code den ich gerne verstehen möchte:

Code:

function [sys] = test_init(set_sim)

sys = Sim_sys('test_name')
sys.dict_name = 'test.sldd'

sys.para.value_1 = Sim_para(1.0)
sys.para.pBLL_0  = Sim_para([0 0 0]);
%...
end

 


Code:

classdef Sim_sys
   
    properties
        name           = '';          % Name des Sim_sys Objektes
        para                          % Parameter
        dict_name      = '';          % Name des Data Dictionaries
%...
    end
 


Code:

classdef Sim_para < handle
   
    properties
        value      = 0;         % Wert des Parameters
%...
    end

    methods (Hidden=true)
        function obj = Sim_para(value)
               if exist('value', 'var')
               obj.value     = value;
               obj.nom_value = value;
           end
     end

end

 


Folgende Fragen dazu:
1. Im obersten Block, was passiert hier:
Code:
sys.para.value_1 = Sim_para(1.0)

Vermutung: durch den Sim_para(1.0) Befehl sollte ich ein Objekt der Klasse Sim_para
erstellen, dem ich gleichzeitig den Wert 1.0 , also seinem Attribut "Value" zu weise.

Was ich dann allerdings nicht verstehe: links davon habe ich ein Objekt der Klasse Sim_Sys stehen. Dem Attribut sys.para.value_1 ordne ich nun das Objekt der Sim_para Klasse zu?

Diesen Zirkel verstehe ich nicht ganz?

2.
Code:
function [sys] = test_init(set_sim)


Eckige Klammern bedeuten doch eigentlich, das ich etwas n-dimensionales erzeuge?


So ganz steige ich noch nicht durch.

Danke für Eure Tipps
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 22.650
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2020, 12:51     Titel:
  Antworten mit Zitat      
Hallo,

1.
ich würde es etwas anders formulieren:
durch den Sim_para(1.0) Befehl sollte ich ein Objekt der Klasse Sim_para
erstellen, bei dem die Eigenschaft value den Wert 1.0 hat.

Sofern nicht in einem anderen Code-Teil anders festgelegt, wird sys.para eine Struktur mit Feld value_1, das den Wert Sim_para(1.0).

Ich finde diese Form der Schachtelung ungut. Insbesondere sehe ich keinen Grund für die zusätzliche Hierarchisierung und ich würde es vermeiden, Strukturen in Eigenschaften von Objekten zu speichern. Wenn, dann sollten Objekte in den Eigenschaften von Objekten gespeichert werden.

2.
[] werden auch für mehrere Rückgabeargumente einer Funktion verwendet. Da es hier aber nur ein Rückgabeargument gibt, sind die Klammern unnötig. Sie schaden aber auch nicht.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Helmut_Kern
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 07.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2020, 16:14     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,
Sofern nicht in einem anderen Code-Teil anders festgelegt, wird sys.para eine Struktur mit Feld value_1, das den Wert Sim_para(1.0).


Hallo Harald,

nett von Dir das Du mir hilfst.

Ich frage mich, wenn man ein Objekt der Klasse Sim-para erstellt, dem Attribut Sim_para.value den Wert 1 zuordnet und diesen dann übergibt, warum dann nicht gleich:

statt:
Code:
sys.para.value_1 = Sim_para(1.0)

eben
Code:
sys.para.value_1 =1.0


...merkwürdig für mich

vg Helmut Kern
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 22.650
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2020, 21:50     Titel:
  Antworten mit Zitat      
Hallo,

in einem Fall wird ein Objekt zugewiesen, bei dem eine Eigenschaft 1 ist. Das Objekt hat ja auch noch andere Eigenschaften. Im anderen Fall ist es wirklich nur die Zahl 1.

Von dem, was ich sehen kann, sehe ich es aber auch so, dass das gewählte Klassen-Struct-Klassen-Konstrukt unnötig komplex ist.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.