|
|
|
Filterfunktion nach uigetfile - Aufruf ausführen. |
|
| simpeldimpel |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.04.2012, 13:57
Titel: Filterfunktion nach uigetfile - Aufruf ausführen.
|
 |
| |
 |
|
Hallo zusammen,
wie im Titel schon beschrieben hab ich ein Problem mit dem Aufrufen von einer Filterfunktion.
Es stehen im Matlab-Verzeichnis verschiedene Filterfunktionen zu Verfügung und über den Befehl uigetfile() soll die entsprechende Filterfunktion die in einem m-File abgespeichert ist ausgewählt werden können.
Das abholen des Funktionsnamens funktioniert ja noch. Ich erhalte dann z.B. den Filternamen : filter_50_Hz_bandstopp.m. Leider ist dieser Filtername in einem Char abgespeichert und ich weiß nicht wie ich jetzt den Filternamen in die Filterfunktion bekomme. Die Filterfunktion lautet ja:
filter(filter_50_Hz_banstopp,'daten');
Meine Frage ist jetzt: Wie bekomme ich aus dem Char in dem 'filter_50_Hz_bandstopp.m' steht das .m entfernt und den Namen in die Filterfunktion eingetragen. Ich komme einfach nicht dahinter.
Fehlermeldung: ??? Undefined function or method 'filter' for input arguments of type 'char'.
Habe schon versucht über getlength(netzfilter) die länge des Strings herrauszufinden und dann die letzten 2 Zeichen wegzunehmen. Leider funktioniert der Befehl getlength bei einem Char nicht.
Gruß Simpeldimpel
|
|
|
|
|
|
| simpeldimpel |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.04.2012, 14:16
Titel:
|
 |
Ok wie ich das .m wegbekomme habe ich inzwischen rausbekommen. Das funktioniert mit dem regexprep(netzfilter,'\.(.)*','') befehl.
Also neuer Code:
Fehlermeldung ist immer noch die selbe.
??? Undefined function or method 'filter' for input arguments of type 'char'.
Nochmal zum verdeutlichen:
Der Befehl filter(50_Hz_filter,'Daten'); funktioniert.
aber wenn ich 50_Hz_filter.m über uigetfile einlese, mit regexprep auf 50_Hz_filter kürze und dann als funktion ausführen will funktioniert es nicht.
Gruß Simpeldimpel
|
|
|
|
| simpeldimpel |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.04.2012, 10:45
Titel:
|
 |
So ich bin wieder ein Schritt weiter gekommen.
Über die Funktion
lässt sich der String in ein Function-Handle umwandeln. Wendet man dies jedoch auf eine Funktion an:
So kommt die Fehlermeldung:
??? Undefined function or method 'filter' for input arguments of type
'function_handle'.
Kennt sich damit jemand aus? Die googel Suche bringt da nichts vernünftiges.
Gruß Simpeldimpel
|
|
|
|
| denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 26.04.2012, 11:26
Titel:
|
 |
Hallo
du versuchst wohl eigene Filter zu erzeugen und verwenden
Dann solltest du dir FDESIGN oder FILTERBUILDER anschauen.
FILTER braucht einen Filterobjekt keine Funktionhandle
Erzeugt deine Funktion "netzfilter_func" so einen Objekt?
dann sollst du Funktion ausführen und einen Objekt erzeugen.
Schaue dir auch FSPECIAL an
|
|
|
|
| simpeldimpel |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.04.2012, 11:42
Titel:
|
 |
| |
 |
|
Ja so in der Art, aber ich hatte was anderes vor.
Ich habe mir über das fdatool verschiedene Filter generiert und als Matlab Code abgespeichert. Über verschiedene GUI-Oberflächen kann ich jetzt Einstellungen vornehmen, z.B. auf welchen Channel die Analogdaten aufgezeichnet werden sollen, wie lange die Aufzeichnung dauern soll usw..
Darunter soll es dann auch eine Auswahlmöglichkeiten zwischen verschiedenen Filtern geben die schon vordefiniert wurden über das besagte fdatool. Je nach dem welchen filter ich dann auswähle sollen die daten mit diesem gefiltert werden. Bei deinen Vorschlägen muss ich ja den Filter jedes mal neu entwerfen, was nicht der Sin der Sache ist, sondern ich will den entsprechenden Filter einfach nur Abrufen.
Ich habe mir halt vorgestellt, das ganze System offen zu halten, damit wenn ein neuer Filter in das Matlab-Verzeichnis gestellt wird, er automatisch im Suchpfad auftaucht und verwendet werden kann, ohne dass eine Änderung im Matlab-Code vorgenommen werden muss.
Mit deinen Vorschlägen muss ich ja über die Programmieroberfläche von Filtern gehen.
Gruß Simpeldimpel
|
|
|
|
| simpeldimpel |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 25.04.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.04.2012, 12:40
Titel:
|
 |
So
ich bin jetzt dahintergestiegen wie ich das Problem lösen kann. Es ist eigentlich ganz Simpel. Hier mal der komplette Code für alle die auch das selbe Problem haben.
Das Problem war, das er die Func-Handel in der Filterfunktion nicht mochte. Wenn aber mit
die Funktion aufgerufen wird und die berechneten Filterparameter filter_parameter abgespeichert werden, kann ich mit diesen Parametern die Filterfunktion aufrufen!!
@denny
Danke für deine Hilfe, hast mir wirklich sehr weitergeholfen für dieses doch recht schwere Problem. Die Daten lagen ja auch als double vor, hab mich bei diesem Beispiel leider verschrieben .
Das Problem waren die Filterparameter, die ich nicht wie gewohnt in aufrufen konnte da die Funktion als Funktion-Handle vorlag.
@alle
Wirklich tolles Forum hier, macht weiter so.
Gruß Simpeldimpel
|
|
|
|
|
|
|
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.
|
|