Verfasst am: 07.07.2017, 07:59
Titel: Fragen zu Code-Fragment
Hallo zusammen,
ich versuche gerade einen C-Code aus einer best. Toolbox (Carnot) zu erweitern.
Rein theoretisch verstehe ich C++, habe aber bisher keine Erfahrung mit speziellen MATLAB-Funktionen.
In diesem bestehenden Code, wird zu Beginn ein "Build Checking" (so nennens die Autoren des Codes) gemacht. Dazu habe ich ein paar Fragen, deshalb hier der Code.
1.)Verstehe ich das richtig, dass zuerst mal die Anzahl der Eingangsparameter auf 0 gesetzt und dann verglichen wird, ob die Anzahl zur erforderlichen passt?
Scheint mir irgendwie unlogisch.
2.) Wenn dann die Anzahl der Input-Ports nicht auf 1 gesetzt wird, wird abgebrochen?
3.) Kann mir jmd. auf deutsch erklären was ssSetInputPortDirectFeedThrough(S, 0, 1); macht, die Erklärung in der Doku bringt mich nicht weiter (vlt. steh ich auch bloß auf dem Schlauch)
4.) Wieso wird dann die Inputweite wieder auf 1 gesetzt?
5.) Wieso wird das Verhalten der S-Funktion zweimal auf Default gesetzt?
6.) Brauche ich den ganzen Block oder kann der raus?
Code:
/* Function: mdlInitializeSampleTimes =========================================
* Abstract:
* Specifiy that we inherit our sample time from the driving block.
*/
static void mdlInitializeSampleTimes(SimStruct *S) {
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
ssSetOffsetTime(S, 0, 0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);
}
Verfasst am: 08.07.2017, 11:44
Titel: Re: Fragen zu Code-Fragment
Hallo mowad,
Um die Fragen beantworten zu können, müsste man zunächstmal die entsprechende Toolbox installiert haben. Man könnte also nach "Matlab Carnot" googeln, hoffen, dass man die gleiche Toolbox und Version findet, wie Du, das Programm installieren und sich dann durch die Dokumentation durcharbeiten. Das ist nicht effizient.
Zitat:
Rein theoretisch verstehe ich C++, habe aber bisher keine Erfahrung mit speziellen MATLAB-Funktionen.
C++ ist nicht Matlab, deshalb hat der Code nichts mit "speziellen Matlab-Funktionen" zu tun.
Was z.B. "ssSetNumSFcnParams(S, 0)" genau macht, sollte in der Dokumentation oder zumindest im Sourcecode der Funktion erklärt sein. Hast Du dort mal nachgeschaut?
Zitat:
3.) Kann mir jmd. auf deutsch erklären was ssSetInputPortDirectFeedThrough(S, 0, 1); macht, die Erklärung in der Doku bringt mich nicht weiter (vlt. steh ich auch bloß auf dem Schlauch)
Dann erkläre doch mal genau, welche Frage die Dokumentation offen lässt. Es ist nicht sinnvoll, sie nochmal auf Deutsch in Gänze nachzuerzählen, wenn Du eine konkrete Frage dazu hast.
Die anderen Fragen wiederum sind sehr konkret. Wenn jemand nicht miot der gleichen Toolbox die gleichen Probleme bearbeitet wie Du, kann man sie kaum beantworten.
Du veröffentlichst hier Source-Code ohne die dazugehörige Copyright Notitz. Der Code der Carnot-Toolbox wurde unter der "GNU Lesser General Public License" veröffentlicht. Hast Du mal nachgeschaut, ob dies das auszugsweise Veröffentlichen des Codes ohne Nennung des Autors erlaubt? Ich frage mal, denn Copyright von Code wird von vielen Nutzern dieses und anderer Foren schlicht ignoriert und kaum einer macht sich Gedanken darüber, welche Auswirkungen es haben kann, wenn man illegale Inhalte in einem Forum postet - für den Postenden und für die Betreiber des Forums.
Ich habe nach "Carnot" gegoogelt, die Toolbox runtergeladen, die Lizenz-Bedingungen durchgelesen, das File gesucht, aus dem Du zitiert hast, die GNU Lesser - Lizenz angeschaut und gesucht, was da zum Zitieren ohne Nennung der Quelle steht. In dieser Zeit konnte ich Dir bei der Lösung Deiner Fragen leider kein Stückchen weiter bringen. Sorry.
Entschuldigung erstmal für die Copyright-Geschichte, der Vollständigkeit halber hier, der Lizenztext, mit dem der Code hier gezeigt werden darf.
Code:
/***********************************************************************
* This file is part of the CARNOT Blockset.
* Copyright (c)1998-2015, Solar-Institute Juelich of the FH Aachen.
* Additional Copyright for this file see list auf authors.
*All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*3. Neither the name of the copyright holder nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FORANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
***********************************************************************
Alle angesprochenen Funktionen werden ganz kurz in der MATLAB Doku erklärt, daher gehe ich davon aus, dass die nicht aus der Toolbox kommen, sondern von MATLAB. Bis auf den einen angesprochenen Befehl verstehe ich die Befehle grundsätzlich, aber die Kombi ist mir unklar (wie beschrieben).
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
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.