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

Speichern der Variablen aus mdlOutputs in einem Buffer

 

Dellirius
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 06.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2009, 17:46     Titel: Speichern der Variablen aus mdlOutputs in einem Buffer
  Antworten mit Zitat      
Hi Leute

Ich bin inzwischen an einem weiteren Problem angestossen, wahrscheinlich ist das ganze einfach zu lösen:), da ich aber noch Neuling in dem Gebiet bin frage ich hier nach.

Ich möchte von einem Signal den Gleitenden Mittelwert innerhalb einer bestimmten Zeit berrechnen. Den Weighted Moving Average Block aus Simulink hab ich mir angeschaut, aber leider erfüllt dieser irgendwie seine Funktion nicht. Meine Signale werden nur durch die Gewichtung verstärkt. Deswegen habe ich mich dazu entschlossen eine S-Function zu schreiben und über mdlOutputs an die Werte zu gelangen und somit dann den Mittelwert zu berechnen.

Code:


function sys = mdlOutputs(t,x,u)

time = u(1)
amplitude = u(2);

statestxt = findobj('Tag','curState');

%update the gui
set(statestxt,'string',amplitude);

sys=[];
 


Ich habe soweit Zugriff auf die Variablen, in meinem GUI im Textfeld(curState) werden mir die Werte von amplitude dargestellt.

Meine Frage ist nun, wie kann ich diese Werte von amplitude in einem Buffer speichern und nach einer Zeit x den Mittelwert davon berechnen? Es handelt sich hierbei um ein kontinulierliches Signal, wobei der Buffer nach der Zeit x dann wieder mit den nächsten Werten überschrieben werden würde.

Ich hoffe meine Frage klar formuliert zuhaben Smile

MFG Fabian
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 11.05.2009, 13:20     Titel:
  Antworten mit Zitat      
Hallo,

für einen gleitenden Mittelwert kann man auch einfach den filter-Block verwenden:
a = 1
b = ones(1, n) / n;
wobei n die Anzahl der Punkte für den Mittelwert ist.

doc filter zeigt das als Beispiel ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Dellirius
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 06.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2009, 15:45     Titel:
  Antworten mit Zitat      
Hi Titus,

Danke für deine Antwort, ich werde mir das gleich einmal anschauen.

mfg Fabian
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 - 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.