WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

.m-file eines Filters einbinden

 

djanski
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 03.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 16:08     Titel: .m-file eines Filters einbinden
  Antworten mit Zitat      
Hallo Leute,

also es darum, dass ich mir einen Filter mit Matlab generiert und anschließend in eine m-file gewandelt habe.
Dabei handelt es sich jetzt um eine Funktion die so aussieht:

Code:

function Hd = BW_1000_1500
%BW_1000_1500 Returns a discrete-time filter object.

% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.

% All frequency values are in Hz.
Fs = 4000;  % Sampling Frequency

Fpass = 1000;        % Passband Frequency
Fstop = 1500;        % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);

% [EOF]
 


Mein Plan ist es jetzt, auf die in dem .m-file hinterlegte Funktion zuzugreifen, so dass ich damit Matrizen unterschiedlicher länge betrachten kann. Die Frage ist jetzt also wie ich auf die Funktion zugreife auch wenn die Datensätze unterschiedlich lang sind? Und welche Parameter übergebe ich ihm da?

Wär cool wenn mir jemand helfen könnte.

MfG
djanski
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 24.05.2011, 18:14     Titel:
  Antworten mit Zitat      
Hallo

im Prinzip ganz einfach FILTER(FilterObj, Matrix)

Code:

filter(BW_1000_1500(), hier_deine_Matrix)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
djanski
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 03.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 12:48     Titel:
  Antworten mit Zitat      
Hey,

vielen Dank für die schnelle Antwort. Hat mein Problem gelöst!
Ich hätte aber noch zwei Frage.
1. Warum hast du "()" hinter den Filternamen geschrieben. Ich habe festgestellt, dass man sie auch weg lasen kann. Haben die noch einen weiteren Nutzen bzw. kann man die sinnvoll füllen?
2. Ich würde gerne die im Filter angegebene Abtastfrequenz dynamisch eintragen. Wie setze ich das um im Skirpt, dass ich Fs neu setze?

Könnt ihr mir da auch helfen?

Lg

djanski
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.05.2011, 13:11     Titel:
  Antworten mit Zitat      
Hallo

zu 1)
Das ist einfach der Syntax bei JAVA/C++ so, dort muss man Funktion stets mit Klammern aufrufen. In Matlab kann man die Klammern auch weglassen, wenn man keine Übergabeparameter erwartet.
zu 2) sicher du kannst auch Fs an den Funktion übergeben, du musst bloß den Übergabeparameter definieren
lese dazu unbedingt Getting Started in Matlab Dokumentation, dort ist doch alles ganz gut beschrieben:
http://www.mathworks.com/help/techd.....lab/f4-2525.html#f4-25892

so musste die Funktion abändern
Code:


function Hd = BW_1000_1500(Fs)
%BW_1000_1500 Returns a discrete-time filter object.

% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.

% All frequency values are in Hz.
if nargin==0
   Fs = 4000;  % Sampling Frequency
end

Fpass = 1000;        % Passband Frequency
Fstop = 1500;        % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);

 

Aufruf sieht dann so aus:
Code:

filter(BW_1000_1500(3000), hier_deine_Matrix)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.