|
|
Struct nach bestimmten Einträgen filtern |
|
Matze753 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.06.2015, 15:22
Titel: Struct nach bestimmten Einträgen filtern
|
 |
|
 |
|
Hallo zusammen,
ich würde gern folgendes in MATLAB umsetzen. Stand jetzt habe ich ein Skript, dass über FileList=dir(fullfile(Pfadangabe, '*.mat')) ein struct erstellt. Für k = 1:length(FileList) wird FileList(k).name an eine Funktion übergeben. Das klappt wunderbar.
Jetzt möchte ich aber nicht alle Dateien in meinem Pfad untersuchen, also an die Funktion übergeben, sondern nur eine Auswahl. Für diese Auswahl liegen mir die Dateinamen vor, die ich jetzt per User-Eingabe einlesen und dann an die Funktion übergeben möchte.
Habe das über den Input-Befehl versucht: getFiles=input('bla:','s') und dann soll für k=length(getFiles) getFiles(k) an die Funktion übergeben werden. Das klappt natürlich nicht.
Das scheint ja daran zu liegen, dass ich vorher ein struct und jetzt eine bloße String Variable versuche zu übergeben. Aber wie kann ich das anders lösen?
Eine weitere, wohl elegantere Strategie wäre, die FileList entsprechend so zu kürzen, dass nur die vom User vorgegebenen Dateien darin auftauchen. Aber auch hier fällt mir keine Lösung ein.
Ich bin dankbar für jede Hilfe.
Lieben Gruß,
Matze
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.06.2015, 02:07
Titel: Re: Struct nach bestimmten Einträgen filtern
|
 |
Hallo Matze753,
Zitat: |
Habe das über den Input-Befehl versucht: getFiles=input('bla:','s') und dann soll für k=length(getFiles) getFiles(k) an die Funktion übergeben werden. Das klappt natürlich nicht. |
Bitte poste den relevanten Code genauso, wie Du ihn verwendest. Du schreibst zwar, dass es "natürlich" nicht klappt, aber was klappt genau nicht und warum ist das natürlich?
Zitat: |
Das scheint ja daran zu liegen, dass ich vorher ein struct und jetzt eine bloße String Variable versuche zu übergeben. Aber wie kann ich das anders lösen? |
Hier kann ich ohne den exakten Code nicht erraten, was Du genau meinst.
Wie wäre:
Gruß, Jan
|
|
|
Matze753 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.06.2015, 15:57
Titel:
|
 |
|
 |
|
Hallo Jan,
entschuldige, hier nochmal eine genauere Beschreibung meines Problems:
Je nach Nutzereingabe über ein questdlg (zCase wird definiert), kann ich entweder einen ganzen Ordner einladen und wie folgt an die Funktion fVisualisierung geben:
Oder aber einzelne Dateien:
Ich habe jetzt in einer Excel die Dateinamen der Dateien, die ich an fVisualisierung übergeben möchte. Diese haben die Form 'dateiname.mat' und stehen untereinander in einer Spalte.
Diese Spalte möchte ich im besten Falle per Hand markieren, kopieren und über eine Usereingabe in meinem Skript an fVisualisierung geben, sodass nur die von mir eingefügten Dateien an die Funktion übergeben werden.
Wenn ich dies über MultiSelect löse, erhalte ich den Fehler:
Error using load
Argument must contain a string.
Error in fVisualisierung (line 17)
load (filename);
fVisualisierung läd die Dateien nacheinander über load ein. Dazu muss filename als string definiert sein.
Kannst du mir hier weiterhelfen?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 21.06.2015, 20:16
Titel:
|
 |
|
 |
|
Hallo Matze753,
Ich kann Dir nicht folgen.
Zitat: |
Je nach Nutzereingabe über ein questdlg (zCase wird definiert), kann ich entweder einen ganzen Ordner einladen und wie folgt an die Funktion fVisualisierung geben: |
Was heißt "zCase wird definiert"? Ist zCase ein String? Dann ist "==" nicht der richtige Operator für einen Vergleich. Verwende STRCMP dafür.
Zitat: |
Oder aber einzelne Dateien:
|
Dies sind nicht "einzelne Dateien", sondern nur eine einizige Datei.
Zitat: |
Ich habe jetzt in einer Excel die Dateinamen der Dateien, die ich an fVisualisierung übergeben möchte. Diese haben die Form 'dateiname.mat' und stehen untereinander in einer Spalte. |
Das ist jetzt ein neues Problem, oder?
Zitat: |
Diese Spalte möchte ich im besten Falle per Hand markieren, kopieren und über eine Usereingabe in meinem Skript an fVisualisierung geben, sodass nur die von mir eingefügten Dateien an die Funktion übergeben werden. |
Was bedeutet genau "per Usereingabe"? Die Dateinamen sollen aus einem Excel-File über Copy&Paste in ein M-File kopiert werden? Das ist ziemlich indirekt. Wie wäre XLSREAD?
Zitat: |
Wenn ich dies über MultiSelect löse, erhalte ich den Fehler:
Error using load
Argument must contain a string. |
Ohne den dazugehörigen Code zu sehen, kann man nicht erraten, wo das Problem liegt. UIGETFILE liefert natürlich einen Cell-String zurück, wenn man mehrere File-Namen auswählt. Dann muss man LOAD für jeden einzelnen Datei-Namen auch einzeln in einer Schleife aufrufen.
Gruß, Jan
|
|
|
|
|
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 - 2025
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.
|
|