|
|
Gleitender Durchschnitt verschiedener Signale |
|
Joghivan |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 09:36
Titel: Gleitender Durchschnitt verschiedener Signale
|
|
Hallo zusammen,
ich stehe vor folgender Problemstellung.
Ein kontinuierliches Signal soll in Anhängigkeit eines Triggersignals (drei Ausprägungen) in drei unterschiedlichen Speichertöpfen abgelegt werden. Dabei soll ein gleitender Durchschnitt über die letzten 100 Signale gebildet werden. Den gleitenden Durschnitt realisiere ich über einen FIR-Filter. Ich bin mit aktuell nur nicht sicher, wie ich die time delays richtig abbilde.
Es wird vom kontiuierlichen Signal in Abhängigkeit des Triggers ein Wert in einen Topf geleitet. Nun soll aber der Topf nicht mit Nullen oder dem letzten angekommen Signal befüllt werden, sobald der Trigger das Signal in einen anderen Topf umleitet. Ist es richtig, wenn ich den Wert aus dem FIR Filter über einen Memory-Block immer wieder vor den Filter setze, solange der Topf nicht befüllt wird? Oder gibt es eine elegantere Lösung?
Vielen Dank für jedwede Hilfestellung
Joghivan
|
|
|
|
|
Zenon |
Forum-Guru
|
|
Beiträge: 292
|
|
|
|
Anmeldedatum: 20.01.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 09:52
Titel:
|
|
Wenn du mit den Data Store-Blöcken arbeitest kannst Du mit der SampleTime des WriteBlockes den "Schreibtakt" einstellen, was den Memory-Block überflüssig machen sollte...evtl löst das Dein Problem...
|
|
|
Joghivan |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 15:47
Titel:
|
|
Probiere ich einmal aus, danke.
|
|
|
LuizAranha |
Forum-Anfänger
|
|
Beiträge: 39
|
|
|
|
Anmeldedatum: 26.03.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.04.2010, 16:11
Titel:
|
|
Für einen gleitenden Mittelwert könntest du doch eig. einen Memory Block mit Rückführung bauen( also nen diskreten Integrator). Damit erhältst du das Integral null bis tau detau. wenn du jetzt das gleiche Integral in den Grenzen von Null bis zu deinem Zeitfenster über einen Transportdelay Block führst, erhältst du einen moving average. Für kontinuierliche Signale reicht dann ein normaler Integrator.
Abschliessend teilst du noch durch dein gewähltes Zeitfenster.
Hoff, das is bisschen hilfreich
greez
|
|
|
pfa |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 09.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.05.2015, 09:20
Titel:
|
|
Hallo Zusammen,
ich bekomme den gleitenden Mittelwert nicht hin :/. Ich versuche den gleitenden Mittelwert des Sinus über die letzten 200 Schritte zu erstellen (als Minimalbeispiel), bei einem fixen Timestep von 0.01. Die Ausgabe der Scopes zeigt aber nicht annähernd einen gleitenden Mittelwert. Kann mir jemand einen Tipp geben was ich hier noch ändern muss?
Dankeeee und Gruß André
Beschreibung: |
|
Download |
Dateiname: |
minimalbeispiel_gleitender_mittelwert.slx |
Dateigröße: |
15.65 KB |
Heruntergeladen: |
1260 mal |
_________________
???
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 28.05.2015, 09:50
Titel:
|
|
|
|
pfa |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 09.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.05.2015, 10:45
Titel:
|
|
Hellooo
Danke für die fixe Antwort, diesen Block habe ich auch schon probiert, aber wenn ich den Text richtig verstehe ("This example shows how to create a System object that implements a moving average filter.") bekommt das 'Matlab-System' in diesem Beispiel schon einen gleitenden Mittelwert und filtert diesen noch einmal. Auf Deutsch, ich bekomme es damit nicht hin :/
Ist es nicht möglich eine 'tsmovavg' (http://de.mathworks.com/help/finance/tsmovavg.html) irgendwie in einen Simulinkblock zu bekommen?
Gruß André
_________________
???
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 28.05.2015, 10:53
Titel:
|
|
Der Mean Block aus der DSP System Tbx hat die Option
Zitat: |
Running Operation
When you select the Running mean check box, the block tracks the mean value of each channel in a time sequence of inputs.
|
Andreas
|
|
|
pfa |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 09.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.05.2015, 11:09
Titel:
|
|
Hallo Andreas,
Danke für den Hinweis. Ich habe vergessen zu sagen, dass ich das ganze mit den Simulink-Standard-Toolboxen machen muss ...
Gruß André
Beschreibung: |
|
Download |
Dateiname: |
verfügbare_toolbox.JPG |
Dateigröße: |
18.47 KB |
Heruntergeladen: |
777 mal |
_________________
???
|
|
|
Winkow |
Moderator
|
|
Beiträge: 3.842
|
|
|
|
Anmeldedatum: 04.11.11
|
|
|
|
Wohnort: Dresden
|
|
|
|
Version: R2014a 2015a
|
|
|
|
|
|
Verfasst am: 28.05.2015, 11:42
Titel:
|
|
Zitat: |
("This example shows how to create a System object that implements a moving average filter.") bekommt das 'Matlab-System' in diesem Beispiel schon einen gleitenden Mittelwert und filtert diesen noch einmal. Auf Deutsch, ich bekomme es damit nicht hin :/ |
die nächsten 2 sätze sind
Zitat: |
. The example shows how to use the System object in MATLAB® and Simulink® through the MATLAB System block. MovingAverageFilter is a simple moving average System object filter, which computes the unweighted mean of the previous WindowLength input samples, where WindowLength is the length of the moving average window. |
das hört sich für mich nach dem an was du machen willst
_________________
richtig Fragen
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 28.05.2015, 14:32
Titel:
|
|
Speziell in der Signalverarbeitung ist es eine gute Idee auch die Fähigkeiten voll auszunutzen die sich mit der DSP System Toolbox bieten. Vor allen Dingen ist die Performance besser. Auch wenn einmal C Code generiert werden soll.
Sollte das eine Hochschule sein, bitte ich um eine PN oder email mit dem Namen der Hochschule / der Lizenznummer. Ich bin sicher ich treibe da Lizenzen mit den relevanen Produkten auf.
Sollte das ein Industrieunternehmen sein, bitte klären was das Ziel der Gesamtapplikation ist (siehe Performance, Codegenerierung) ist.
Andreas
|
|
|
pfa |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 09.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.05.2015, 07:35
Titel:
|
|
|
|
|
Hallo Andreas,
ich habe eine Hochschulversion, aber es arbeiten mehrere Personen, teilweise schon aus der Hochschule ausgeschieden, an dem Projekt und diese haben keine Lizenz aus der Industrie und die Hochschullizenz ist teilweise abgelaufen. Frag mich bitte nicht wie deren Lizenz aussieht
Das mit dem Matlab-Block und der Classe von Mathworks funktioniert. Die Perfomance ist nur total 'im Arsch' (Simulationszeit > 1h, vorher waren es max. 5 Minuten). Sprich falls, jemandem noch eine andere Möglichkeit einfällt wäre ich sehr dankbar darum. Hat diesen Ansatz schon einmal jemand umgesetzt:
Zitat: |
Für einen gleitenden Mittelwert könntest du doch eig. einen Memory Block mit Rückführung bauen( also nen diskreten Integrator). Damit erhältst du das Integral null bis tau detau. wenn du jetzt das gleiche Integral in den Grenzen von Null bis zu deinem Zeitfenster über einen Transportdelay Block führst, erhältst du einen moving average. Für kontinuierliche Signale reicht dann ein normaler Integrator.
Abschliessend teilst du noch durch dein gewähltes Zeitfenster. |
-> ich hab das in meinem Minimalbeispiel probiert umzusetzen, komme aber auf keinen grünen Pfad.
Vielen Dank.
Gruß André
_________________
???
|
|
|
pfa |
Forum-Anfänger
|
|
Beiträge: 18
|
|
|
|
Anmeldedatum: 09.04.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.06.2015, 14:54
Titel:
|
|
Hallo Zusammen,
ich habe jetzt ein discretes Shift Register vor einen Summenbaustein gesetzt und teile anschließend wieder durch die 'Number of Inputs' (http://de.mathworks.com/help/physmod/sps/powersys/ref/discreteshiftregister.html) . Diese Lösung gibt bei mir eine wesentlich bessere Laufzeit als mit dem Matlabblock.
Gruß André
Beschreibung: |
|
Download |
Dateiname: |
gmw.JPG |
Dateigröße: |
15.43 KB |
Heruntergeladen: |
1384 mal |
_________________
???
|
|
|
|
|
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.
|
|