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

Gleitender Median eines Signal in Echtzeit in Simulink

 

liupan539649
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 08:33     Titel: Gleitender Median eines Signal in Echtzeit in Simulink
  Antworten mit Zitat      
Hallo Zusammen,

ich muss einen Median eines Sensorsignals letzter Sekunde in Echtzeit in Simulink berechnen. Da das Algo im ECU geflasht wird, soll es am besten durch atomisch Simulink Block realisiert werden. Hat jemand eine Idee? Falls nicht, mit welchem Toolbox kann ich schaffen? Danke.

Gruß
Andi

Zuletzt bearbeitet von liupan539649 am 05.05.2015, 08:55, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 05.05.2015, 08:49     Titel:
  Antworten mit Zitat      
Das ist eine komplexe Anwendung. Ist das eine Anwendung im Rahmen einer Bachelorarbeit in der Industrie? Da würde ich mich nicht auf eine Community-Antwort verlassen, sondern die Applikation mit MathWorks bersprechen.

Generell gibt es die DSP System Toolbox (Achtung, verschiedene Namen in der Vergangenheit) http://www.mathworks.com/products/dsp-system/, die das Ganze Buffering bedienen kann, denn das benötigt man ja für so was.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
liupan539649
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 08:57     Titel:
  Antworten mit Zitat      
Hallo Andreas,

ja, das ist eine Abschlussarbeit in der Industrie. Okay ich versuche mal mit dem zu kontaktieren.

Gruß
Andi
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 05.05.2015, 09:17     Titel:
  Antworten mit Zitat      
da es hier ein doppelpost giebt in dem im anderen thread zusammenhangslose antworten sind lösche ich den anderen thread mal
liupan539649 hat Folgendes geschrieben:
Hallo Andreas,

danke dir. Das heißt, das ist nur mit atomischen Blocke realisierbar oder? Ich versuche die alte Antwort zu finden.

Gruß,
Andi

liupan539649 hat Folgendes geschrieben:
Hallo Andreas,

meinst du die folgenden:

Code:
data = [1:0.2:4]';
windowSize = 5;
filter(ones(1,windowSize)/windowSize,1,data)


ich brauche den Median nicht den Durchschnitt. Wahrscheinlich habe ich falsch ausgedrückt.

Gruß
Andi

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
rien

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.05.2015, 18:11     Titel:
  Antworten mit Zitat      
Habe ich dich richtig verstanden du willst den Median eines Signals bestimmen, und zwar im Zeitraum von t-1s bis t?
Das Ganze dynamisch in Simulink?

Du könntest selbst eine Level 2 Matlab Funktion schreiben, mit fixer step-size könntest du mit Dworks arbeiten, 1/Ts=Länge deiner Dwork-Vektoren.

Bei nicht fixen step-sizes könntest du mit einem globalen Array arbeiten und von diesen nur die Einträge im entsprechenden Zeitfenster auswerten. Alternativ könntest du deine D-Works etwas zu lang machen und mit zwei Dworks arbeiten (einmal Zeit und einmal Signal). Du müsstest aufgrund der nicht fixen Zeitabständen dynamisch die Dwork-Zeitmatrix absuchen, Einträge löschen und neu füllen.

Vorteil der D-Work-Lösungen, es braucht keine Blockidentifikation, bei Lösungen welche mit externen Speichern arbeiten muss für den Fall das der Block mehrmals verwendet werrden soll eine eindeutige Zuordnung geschaffen werden (funktioniert gut, das Konzept muss aber gut durchdacht werden). Bsp indem man bei der Blockinitialisierung eine Blocknummer bestimmt und an den Block übergibt.
 
liupan539649
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2015, 16:18     Titel:
  Antworten mit Zitat      
Hallo Rien,

Danke dir.

Da dieser Algo zum Rapid Prototyping eingesetzt wird, habe ich schon auf Matlab Function verzichtet. Das heißt, ich will nur mit Basic Simulink Block oder C codes das realisieren.

gruß,
Andi
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.05.2015, 07:00     Titel:
  Antworten mit Zitat      
Wie ist es denn mit der "DSP System Toolbox"? Steht die zur Verfügung? Was sagt der MathWorks Applikations-, oder Support-Ingenieur?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
liupan539649
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2015, 15:11     Titel:
  Antworten mit Zitat      
Hallo Andreas,

danke dir. Kein DSP steht mir zur Verfügung. Auch wenn es vorhanden ist, kann ich nicht einsetzen, weil ich endlich im Targetlink zur Code-Generierung umsetzen muss. Ich habe mit Mathworks noch nicht kontaktiert.

gruß,
andi
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 13.05.2015, 16:16     Titel:
  Antworten mit Zitat      
Nun, wenn ich mal akzeptiere, dass Codegenerierung nicht mit MathWorks Produkten erfolgt, sehe trotzdem folgende Informationen bei dSPACE:

https://www.dspace.com/files/pdf1/d.....x_Compatibility_RLS73.pdf

Auch wenn ich nicht weiss, ob die speziellen Version passen, so ist für mich erstmal klar, dass es grundsätzlich funktionieren müsste - nur in Spezialfällen nicht.

Wie auch immer, wenn ich die Gegebenheit aktzeptiere ist es wohl am besten die Umsetzung als C MEX S-Function

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
rien

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2015, 19:58     Titel:
  Antworten mit Zitat      
liupan539649 hat Folgendes geschrieben:
Hallo Rien,

Danke dir.

Da dieser Algo zum Rapid Prototyping eingesetzt wird, habe ich schon auf Matlab Function verzichtet. Das heißt, ich will nur mit Basic Simulink Block oder C codes das realisieren.

gruß,
Andi

Du kannst auch Level 2 S-Funktionen in C schreiben Wink

Gruss
rien
 
liupan539649
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.05.2015, 21:32     Titel:
  Antworten mit Zitat      
Hallo Andreas und Rien,

danke euch für die Antworten. Ihr beide habt betont, dass die beste Umsetzungen durch C Codes in der S-Funktion realisiert werden soll. Es ist mir so klar, könnt ihr detaillierter erklären?

Gruß
Andi
Private Nachricht senden Benutzer-Profile anzeigen
 
rien

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.05.2015, 18:51     Titel:
  Antworten mit Zitat      
Ich habe noch nie Level 2 Matlab funktionen in C geschrieben, da ich alles Matlab-intern handle und die Performance bisher kein Kriterium war.

Aber, die verschiedenen von mir vorgestellten Aproches lassen sich sowohl mit in Matlab geschriebenen als auch mit in C geschriebenen Level 2 S-Funktionen umsetzten.

In der Simulink Library findest man unter user defined functions diverse vorgefertigte Beispiele, das sollte als groben Anhaltspunkt genügen.

Da lediglich Daten aufsummiert und über eine bestimmte Zeit ausgewertet werden sollte die Umsetzung mit dem Block-feature Dwork am einfachsten sein.

Bin mir allerdings gerade am überlegen ob mit einer Clock und ein paar anderen Dingen ein Subsystem gebastelst werden kann welches deine Wünsche erfüllt.
 
liupan539649
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 05.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2015, 09:57     Titel:
  Antworten mit Zitat      
Hallo Rien,

danke dir für die Hilfe. Ich will probieren, ob es möglich ist, mit Simulink Block es zu realisieren. Falls es echt nicht funktionieren kann, werde ich S-Funktion probieren.

viele Grüße,
Andi
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.