|
|
Mittelwert eines Sinus-Signals bestimmen |
|
JaSoIstEs |
Forum-Guru
|
|
Beiträge: 266
|
|
|
|
Anmeldedatum: 01.10.12
|
|
|
|
Wohnort: Hessen
|
|
|
|
Version: 2019b
|
|
|
|
|
|
Verfasst am: 09.11.2018, 14:42
Titel: Mittelwert eines Sinus-Signals bestimmen
|
|
Servus,
Gibt es einen "fertigen" Block mit dem ich den Mittelwert eines Sinus-Signals mir ausgeben lassen kann?
Hier kommt hinzu das er ab einer bestimmten Zeit erst die Werte benutzen darf... .
Im moment mach ich das händisch das ich einen Block "To Workspace" verwende und darüber mein kleines Skript laufen lasse, dass mein Signal Cropped sprich den forderen Kram den ich nicht brauche abschneidet und dann den befehl mean() verwende.
Kann ich das auch irgendwie automatisiert in Simulink machen?
Danke im Voraus
|
|
|
|
|
equi |
Forum-Century
|
|
Beiträge: 123
|
|
|
|
Anmeldedatum: 07.03.17
|
|
|
|
Wohnort: Tübingen
|
|
|
|
Version: Matlab 2018a
|
|
|
|
|
|
Verfasst am: 09.11.2018, 15:17
Titel:
|
|
oder was meinst du mit fertigen Block?
Oder schwingt dein Signal um kein festen Startwert?
_________________
Grüße Equi
|
|
|
JaSoIstEs |
Themenstarter
Forum-Guru
|
|
Beiträge: 266
|
|
|
|
Anmeldedatum: 01.10.12
|
|
|
|
Wohnort: Hessen
|
|
|
|
Version: 2019b
|
|
|
|
|
|
Verfasst am: 09.11.2018, 17:04
Titel:
|
|
Hey danke dir für deine Antwort.
Hab dir mal ein Signal angehängt als Bild.
Ich brauche den Mittelwert vom Zeitpunkt 1.5 ca. bis zum ende der Simulation.
Der Zeitpunkt ist aber Variabel je nach dem wie lange ich die Simulation laufen lasse.
Beschreibung: |
|
Download |
Dateiname: |
2018-11-09_15-24-54.png |
Dateigröße: |
81.19 KB |
Heruntergeladen: |
361 mal |
|
|
|
fabianT |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 31.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.11.2018, 10:44
Titel:
|
|
Hallo,
es gibt keinen fertigen Block für deine Anwendung.
Du kannst das natürlich machen, zum Beispiel:
- Um erst bei 1,5 Sekunden zu starten kannst du einen Enabled Subsystem Block verwenden
- Um den Mittwelwert zu bilden kannst du im Enabled Subsystem Block dein Signal integrieren und durch einen Zähler dividieren. Das ist dann das gleiche Konzept wie mean(). Im Enabled Subsystem Block kannst du nur einen diskreten Integrator verwenden. Wenn du States When Enabling auf reset stellst, kannst du den Enabled Subsystem Block beliebig aktivieren und der Mittelwert wird immer neu berechnet.
Das Ergebnis hängt natürlich vom Solver ab und ob die kontinuierlich oder diskret simulierst. Für die Berechnung des Mittelwert solltest du diskret rechnen.
Wenn es bei dir aber eh nur um Postprocessing geht, ist dein aktuelles Vorgehen wahrscheinlich das einfachste...
Viele Grüße
Fabian
|
|
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 14.11.2018, 08:14
Titel:
|
|
Wenn Du ohnehin schon in Simulink bist, würde ich das Problem auch wie ein Signalverarbeiter angehen:
Ein Tiefpass liefert den Mittelwert. Sobald sowohl die erste als auch die zweite Ableitung des Mittelwerts einen Schwellwert unterschreiten, ist dieser eingeschwungen und genau genug.
_________________
--
The programmer suggested it.
|
|
|
JaSoIstEs |
Themenstarter
Forum-Guru
|
|
Beiträge: 266
|
|
|
|
Anmeldedatum: 01.10.12
|
|
|
|
Wohnort: Hessen
|
|
|
|
Version: 2019b
|
|
|
|
|
|
Verfasst am: 19.11.2018, 10:06
Titel:
|
|
Danke für die Antworten.
Werde beides mal ausprobieren.
Werde mich wieder melden und berichten.
|
|
|
JaSoIstEs |
Themenstarter
Forum-Guru
|
|
Beiträge: 266
|
|
|
|
Anmeldedatum: 01.10.12
|
|
|
|
Wohnort: Hessen
|
|
|
|
Version: 2019b
|
|
|
|
|
|
Verfasst am: 19.11.2018, 11:46
Titel:
|
|
Hallo Nicolas,
wie muss ich den Filter denn einstellen?
Bin da leider nicht so fit.
LG
|
|
|
fabianT |
Forum-Fortgeschrittener
|
|
Beiträge: 84
|
|
|
|
Anmeldedatum: 31.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.11.2018, 14:47
Titel:
|
|
Hallo,
das was ich beschrieben habe ist so etwas wie ein smoothing average filter, nur für den gesamten Zeitraum.
Ein Tiefpass ist letztendlich eine Übertragungsfunktion, die bestimmte höhere Frequenzen rausfiltert. Wenn du einen kontinuierlichen Filter baust, kannst du mit einem transfer function Block anfangen. Ein Filter erster Ordnung hat die Übertragungsfunktion:
G(s) = 1/(T*s+1)
T = 1/(2*pi*f) --> f ist die Grenzfrequenz.
Such einfach mal im Internet oder in der MATLAB Doku.
Viele Grüße
Fabian
|
|
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 20.11.2018, 08:57
Titel:
|
|
Filtereinstellung ist ein bischen trial and error. Die Filterkonstante Tau muß lang genug sein, daß mehrere Sinusschwingungen hineinpassen, und kurz genug sein, daß der Einschwingvorgang (in Deinem Fall aperiodischer Grenzfall) rechtzeitig abgeklungen ist.
Ich würde mit Tau = 1/6*1,5s anfangen.
_________________
--
The programmer suggested it.
|
|
|
|
|
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.
|
|