Friday 27 October 2017

Moving Durchschnitt Filter Simulink


Ich bin neu bei Simulink. Ich möchte den Durchschnitt der eingehenden Daten (die nach einigen Intervallen kommt) von einem Block zu tun. Zum Beispiel sind ununterbrochene gerahmte Daten von 42 Proben von einem Block entfernt. Zusammen mit den gerahmten Daten gibt es einen weiteren Ausgang (Tag), der besagt, dass diese Framesamples zu welcher Kategorie gehören. Tags sind Zahlen von 1-6. Die Ausgabe ist zufällig. Ich möchte die gleiche Kategorie Daten Durchschnitt. Wie der erste Frame ist von cat1, dann nach 4 Frames Kat1 Frame wieder kommt. Nun, wie sollte ich diesen neuen Rahmen mit dem vorherigen Ich möchte dies für alle Kategorien zu tun Durchschnitt. Bitte helfen Sie mir heraus in diesem. Eine schnelle und schmutzige Lösung wäre, eine Arraylist für jede Kategorie implementieren. Initialisieren Sie die Liste mit NaNs und halten Sie einen Zähler für die letzte Probe aus jeder Kategorie. Mit der Mittelfunktion können Sie den Mittelwert aller Messungen erhalten. Wenn Sie nur den Durchschnitt des aktuellen Rahmens und des vorherigen Rahmens wollen, können Sie einfach (cat1 (n1) cat1 (n11)) bedeuten, wobei cat1 der Arraylist für Frames aus der Kategorie 1 ist und n1 der Index des vorherigen Frames in cat1 ist . Wenn Sie einen gewichteten gleitenden Durchschnitt für eine Realzeit-Implementierung wünschen, erstellen Sie für jede Kategorie eine durchschnittliche Variable (nennen Sie sie av1, av2 usw.) und berechnen Sie av1 alphaav1 (1-alpha) cat1 (n11) (wobei alpha das Gewicht ist Bis zum vorherigen Durchschnitt (alphalt1) und cat1 (n11) ist die neue Messung), wenn ein cat1-Rahmen kommt. Wie kann ich messen einen Mittelwert eines kontinuierlichen Signals in Simulink Die Antwort auf diese Frage ist abhängig von Ihrer Schaltfrequenz oder Welligkeit Frequenz. Sie können die oben genannten Methoden verwenden, vorausgesetzt, Sie kennen die Frequenz der Welligkeit. Auch ein einfaches Tiefpassfilter könnte funktionieren. Aber wenn Sie mit variabler Schaltfrequenz (wie Hysterese Stromregelung) zu tun haben, dann benötigen Sie einen adaptiven Filter. Versuchen Sie, Keywords wie adaptive gleitenden Durchschnitt Filter und variable Frequenz zu suchen. Jafar Sadeghi middot Universität von Sistan und Baluchestan einfach integrieren sie durch 1s Block und teilen Sie dann durch Signal-Zeit (clock) mit einem Divisionsblock. Documentation Object Speichern und Laden saveObjectImpl definiert, welche Eigenschaft und Zustand Werte in einer MAT-Datei gespeichert werden, wenn Sie anrufen Speichern. Wenn Sie für Ihre Systemobjektklasse keine saveObjectImpl-Methode definieren, werden nur öffentliche Eigenschaften und Eigenschaften mit dem DiscreteState-Attribut gespeichert. Speichern Sie den Zustand eines Objekts nur, wenn das Objekt gesperrt ist. Wenn Sie das gespeicherte Objekt laden, lädt das Objekt in diesem gesperrten Zustand. In diesem Systemobjekt werden die Filterkoeffizienten gesichert, wenn das Objekt gesperrt ist. LoadObjectImpl definiert, welche Systemobjekt-Eigenschaft und Zustandswerte beim Laden einer MAT-Datei geladen werden. LoadObjectImpl sollte Ihrem saveObjectImpl entsprechen, um sicherzustellen, dass alle gespeicherten Eigenschaften und Daten geladen werden. Hinweis: Sie müssen Access protected für diese Methode festlegen. Systemobjekt Verwendung in MATLAB Dieses Beispiel verwendet das Systemobjekt, um Rauschen aus einer verrauschten Impulsfolge zu entfernen. Die Länge des gleitenden Durchschnittsfilters beträgt 30 Proben. Wenn Sie den vordefinierten dspdemo. MovingAverageFilter verwenden. Ersetzen Sie diesen Namen für MovingAverageFilter im Klasse-Konstruktor, zum Beispiel movingAverageFilter dspdemo. MovingAverageFilter (WindowLength, 30). Simulink-Anpassungsmethoden Sie müssen ein paar Methoden definieren, um das Systemobjekt in einem Simulink MATLAB-Systemblock verwenden zu können. Diese Methoden sind nicht erforderlich, wenn Sie das Systemobjekt nur in MATLAB verwenden. GetOutputSizeImpl gibt die Größe der einzelnen Ausgabeports zurück. Bei Systemobjekten mit einem Eingang und einem Ausgang und wo die Ein - und Ausgabegrößen gleich sein sollen, müssen Sie diese Methode nicht implementieren. Im Fall von MovingAverageFilter. Gibt es einen Eingang und Ausgang und die Größe von jedem ist das gleiche. Entfernen Sie daher diese Methode aus der Klassendefinition von MovingAverageFilter. GetDiscreteStateSpecificationImpl gibt die Größe, den Datentyp und die Komplexität einer Eigenschaft zurück. Diese Eigenschaft muss eine Eigenschaft von Discrete-State sein. Sie müssen diese Methode definieren, wenn Ihr Systemobjekt Eigenschaften von Discrete-State hat und im MATLAB-Systemblock verwendet wird. In diesem Beispiel wird das Verfahren verwendet, um die State-Eigenschaft zu definieren. Wähle dein Land

No comments:

Post a Comment