|
|
Import von Package-Funktionen |
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 11:16
Titel: Import von Package-Funktionen
|
|
|
|
|
Hallo zusammen,
ich bin nach etlichen Jahren Matlab-Abstinenz wieder an einem größeren Ein-Mann-Projekt. Ziel ist eine Toolbox für die Auswertung von Meßdaten. Die Matlab-Version ist R2014a/R2014b, da hier für alle Meßrechner noch Lizenzen vorhanden sind.
Da sehr viele, sehr kleine Funktionen entstehen, habe ich das Ganze in ein paar Klassen und Packages aufgeteilt. Also so:
Sprich: Alles wird in einem gemeinsamen Haupt-Package landen.
In den Skripten, die "myToolbox" benutzen, kann ich mit
alle Funktionen sehr komfortabel nutzen. Meine Frage bezieht sich also auf die Funktionen/Klassen innerhalb dieser Toolbox, bei denen ellenlange Aufrufe stehen. Will ich diese langen Aufrufe zugunsten der Lesbarkeit verkürzen, weiß ich mir im Moment nur mit function handles zu helfen, wie z.B. hier bei dieser statischen Methode, die zwei andere statische Methoden derselben Klasse aufruft:
Gibt es die Möglichkeit, auch auf Klassenebene imports oder einen ähnlichen Mechanismus zu nutzen?
Im Bereich der Unit-Tests scheint dies in Bezug auf Fixtures möglich zu sein - wie sieht es bei "normalen" Klassen aus?
Viele Grüße
Nicolas
_________________
--
The programmer suggested it.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 11:48
Titel:
|
|
Hallo,
versuch mal
Das muss aber wohl in jeder einzelnen Methode stehen.
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 ;)
|
|
|
Nicolas S. |
Themenstarter
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 12:07
Titel:
|
|
Hallo Harald,
das war auch mein erster Versuch, allerdings ist mir unklar, ob und wie ich die Funktionen im Namensraum nutzen kann:
Ich bastel nach dem Mittagessen mal ein lauffähiges Minimalbeispiel. Nicht, dass meine jetzigen Sachen geheim sind- sie sind nur ein peinliches Durcheinander.
_________________
--
The programmer suggested it.
|
|
|
Nicolas S. |
Themenstarter
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 13:20
Titel:
|
|
Ahja, ich habe herausgefunden: Der Import per Wildcard scheint in den Methoden nicht zu funktionieren. Aber es geht der Import einer Klasse:
Damit kann ich erst einmal leben.
Allerdings bevorzuge ich ja Wissen gegenüber Ausprobieren.
Leider scheint das tolle Dokument "Objekct Oriented Programming in Matlab" (R2012) für die Release 2014x nicht mehr verfügbar. Die Sachen sind irgendwie in die MATLAB® Programming Fundamentals gewandert. Dort finde ich allerdings nicht, warum ich in Skripten Importe per Wildcard machen kann, in Methoden nicht.
Kennt noch jemand eine gute Beschreibung dazu?
Viele Grüße
Nicolas
_________________
--
The programmer suggested it.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 14:31
Titel:
|
|
Hallo,
ist isfigure eine statische Methode der Klasse plotfcn? Dann muss der Aufruf immer über den Klassennamen plotfcn erfolgen, und du kannst nur das Package importieren, in dem die Klasse ist.
Ich würde erwarten, dass
import('emgToolbox.*');
ausreicht, um
isfigure = @plotfcn.isfigure;
funktionieren zu lassen.
Folgende Doku-Seite und die darin verlinkten Themen könnten helfen:
https://de.mathworks.com/help/matlab/ref/import.html
Zitat: |
Allerdings bevorzuge ich ja Wissen gegenüber Ausprobieren. |
Meine pragmatische Sichtweise dazu: wenn ich es ausprobiert habe, dann weiß ich's :)
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 ;)
|
|
|
Nicolas S. |
Themenstarter
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 11.11.2018, 15:35
Titel:
|
|
|
|
|
Harald hat Folgendes geschrieben: |
ist isfigure eine statische Methode der Klasse plotfcn? Dann muss der Aufruf immer über den Klassennamen plotfcn erfolgen, und du kannst nur das Package importieren, in dem die Klasse ist.
Ich würde erwarten, dass
import('emgToolbox.*');
ausreicht, um
isfigure = @plotfcn.isfigure;
funktionieren zu lassen.
|
Stimmt: So geht es auch. Das ist sogar noch einmal ein Stück angenehmer:
Harald hat Folgendes geschrieben: |
Zitat: |
Allerdings bevorzuge ich ja Wissen gegenüber Ausprobieren. |
Meine pragmatische Sichtweise dazu: wenn ich es ausprobiert habe, dann weiß ich's :)
|
"Hand crafted test driven design". Klingt deutlich besser als "Trial and error".
Naja, die Web-Version bietet kaum einen Vorteil gegenüber "doc import". Mit Beschreibung meine ich ein Whitepaper oder so. Ich habe auch kein Problem damit, einige Euro in ein Buch zu investieren. "How the MATLAB designers expected you to organize classes, packages and toolboxes - a compact guide on 300 pages". Oder so. :-)
_________________
--
The programmer suggested it.
|
|
|
|
|
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 - 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.
|
|