|
|
Funktion mit variabler Anzahl an optionalen Argumenten |
|
Eldrad Ulthran |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 20.02.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.02.2018, 17:01
Titel: Funktion mit variabler Anzahl an optionalen Argumenten
|
|
|
|
|
Guten Tag,
ich schreibe momentan an einer Funktion, die meine Rohdaten verarbeiten soll, die in separaten Dateien gespeichert sind. Es soll ein verpflichtendes Argument geben, nämlich den Pfad zur Referenzdatei. Danach sollen beliebig viele Dateinamen der Rohdaten (typischerweise 1-20, 0 soll aber für Testzwecke auch erlaubt sein) angegeben werden. Für den Fall, dass die Referenzdaten von schlechter Qualität sind, möchte ich einen Switch "bad" einbauen.
Die Inhalte der Dateien sollen danach geladen und bearbeitet werden, was jedoch nicht mein Problem ist. Ich kriege es momentan nicht hin, die variable Anzahl der optionalen Argumente zu implementieren. Mithilfe des InputParsers kann ich die Pflichtangabe der Referenzdatei sowie den Switch abfangen:
Um die variable Anzahl an weiteren angegebenen Dateien abzufangen, habe ich zunächst p.KeepUnmatched = "true" versucht, was jedoch nur Murks produziert, weil es Parameter=Value - Paare erzeugt und den Switch verschluckt, sodass dann auch "Dateipfad" = "bad" entstehen kann. Mein nächster Ansatz war folgender, der jedoch nicht funktioniert Octave sagt dabei "error: 'method' undefined"
An dieser Stelle sind mir die Ideen ausgegangen. Hat vielleicht einer von euch einen cleveren Einfall hierzu?
|
|
|
|
|
AndyydnA |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.02.2018, 19:12
Titel:
|
|
Hi Eldrad,
auch wenn carandraug mit dem inputParser schön gezeigt hat, was mit classdef möglich ist, würde ich an deiner Stelle hier darauf verzichten.
Ich würde den Dateinamen für die Referenz, ggf. mit "bad" flag als struct übergeben und die Dateien mit Rohdaten einfach per cell array. Wenn ich dirch richtig verstanden habe willst du doch
haben, oder? ref_filename ein string mit pfad zu genau einer Datei, is_bad als true/false und measurement_list als cellarray mit 0..20 Dateien.
Viel Erfolg mit Raman, was für ein Aufbau hast du? Etwas selber gebautes, MachZehnder?
Gruß Andy
|
|
|
Eldrad Ulthran |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 20.02.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.02.2018, 23:38
Titel:
|
|
Hallo Andy,
ich würde schon gerne im Normalfall das "bad"flag vergessen und es nur angeben, wenn ich es brauche. Eine Alternative wäre hierzu auch, das Octave-Skript über ein Bash-Skript aufzurufen und die Dateinamen in Bash zu überprüfen. Dort wäre das Einführen einer Flagge "-bad" oder so einfacher, die dann je nachdem is_bad=true oder is_bad=false an Octave übergibt, ohne dass ich das jedes Mal tippen muss.
Die measurement_list könnte die Dateipfade enthalten, die durch Leerzeichen voneinander getrennt als ein einziger zusammenhängender String übergeben werden, das von Octave wieder mittels strsplit aufgedröselt wird.
Ich messe Raman-Spektren in Überschallexpansionen, der Aufbau ist schon etwas älter und wurde von etlichen meiner Vorgänger auf- und umgebaut. Du kannst ja mal nach "Curry-Jet Raman" googeln ;-)
Grüße, Eldrad
|
|
|
AndyydnA |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.02.2018, 10:52
Titel:
|
|
Ahja, habe ich schon davon gelesen.
Ich verstehe nicht so recht, warum du über bash gehen willst. Bedenke außerdem, dass Dateinamen durch Leerzeichen getrennt zu Problemen führt, falls Leerzeichen im Dateinamen sind. Dazu lieber \0 oder so verwenden.
Ich kenne halt das System nicht und wie es zusammenspielt.
Btw, es auf IRC einen #octave channel und auch den deutschsprachigen #octave-de
https://wiki.octave.org/IRC
Gruß Andy
|
|
|
|
|
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.
|
|