Verfasst am: 11.11.2013, 12:08
Titel: Implementierung eines Tiefpass 1.Ordnung
Hallo Matlab-Freunde,
Ich muss in Matlab einen Tiefpassfilter 1.Ordnung implementieren.
Dazu habe ich eine Schaltung eines Tiefpassfilter 1.Ordnung (siehe "Schaltung.jpg").
Zunächst habe ich die Übertragungsfunktion aufgestellt (siehe "Schaltung.jpg").
Anschließend habe ich diese in Matlab implementiert.
Siehe dazu meinen nachfolgenden Codeteil.
Mein Problem/Frage ist, dass meine Eingangswerte nicht richtig geglättet werden. Ich erhalte schwachsinnige Ausgangswerte die zur keiner Dimension zu meinen
tatsächlichen Eingangswerte stehen.
Könnt Ihr bitte Sagen, "wo der Hase im Pfeffer begraben ist"^^?
Was habe ich übersehen?
Falls Ihr Fragen habt, könnt Ihr diese selbstverständlich stellen.
Ok hab meine Frage falsch formuliert, deshalb nochmal.
1. Bekommst du deine inWerte blockweise oder immer einen nach dem anderen?
2. Musst/möchtest du genau diesen Filter realsieren? Wenn du deine Werte einfach nur kontinuierlich glätten willst, könntest du einfach den "Gleitenden Mittelwert" bilden (ist auch ein TP).
3. Willst du den Filter auf einem DSP realisieren (sprich mit C- Code) oder nur in MatLab?
Zu 1: ich bekomme die intwerte als ein Block , d.h. In einem (19,1) Vektor
Zu 2: JA ich muss es nach dieser Schaltung es umsetzen ist mir so vorgeschrieben worden. Leider...
Zu 3 nein nur matlab Code
Zu 4 schau mir dein Link in Ruhe an
Danke erstmals
Ich denke es liegt irgendwie mit der zeitkonstante
Zusammen.
Ich muss ja eine bestimmte zeit laufen lassen, dass sich die werte daran
Annähern, aber genau dort hängt es
Weiß nicht wie das matlab sagen soll
Quasi als Code.
Ah ok, also dir gehts ums Einschwingen des Filters?
Prinzipiell musst du dir irgendwie die alten Werte merken, weil der Filter sonst bei jedem Block neu einschwingt.
Entweder machst dus mit einem "Ringbuffer" oder du merkst dir einfach immer den letzten Wert, denn bei deiner Übertragungsfunktion brauchst du ja maximal den y(k-1) Wert um y(k) zu berechnen.
Mit dem Thema Zeitkonstante bin ich gerade nicht so fit. Wenn man es aber mit Grenzfrequenzen (lässt sich aus der Zeitkonstante berechnen) und Abtastfrequenzen (mit welcher Frequenz wurden die Stromwerte aufgenommen?) betrachtet würde ich es so umsetzen:
fa = 1; % Abtastfrequenz = 1 Hz
fc = 1 / (2 * pi * 1.5); % Grenzfrequenz. Zeitkonstante = 1,5 s
K = tan((2*pi*fc/fa) / 2); % tan der normierten Grenzfrequenz
a = [1(-(1-K)/(1+K))]; % Nenner-Koeffizienten
b = [(K/(1+K))(K/(1+K))]; % Zähler-Koeffizienten
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
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.