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

Wiederkehrendes Muster aus Messsignal ausschneiden

 

camoesas
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.04.10
Wohnort: München
Version: R2013a
     Beitrag Verfasst am: 11.12.2015, 19:01     Titel: Wiederkehrendes Muster aus Messsignal ausschneiden
  Antworten mit Zitat      
Servus,

Ich habe ein Messsignal, dass sehr hoch aufgelöst ist und aus typischen wiederkehrenden Events besteht. Gibt es eine Funktion, die mir einen typischen Event herausschneidet, nach vorgegebenen Charakteristiken?

Danke

mfg Simon
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.12.2015, 00:25     Titel: Re: Wiederkehrendes Muster aus Messsignal ausschneiden
  Antworten mit Zitat      
Hallo camoesas,

Wahrscheinlich ja.
Wie sieht das Signal aus und welche Charakteristiken meinst Du? Was beduetet Herausschneiden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
camoesas
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.04.10
Wohnort: München
Version: R2013a
     Beitrag Verfasst am: 14.12.2015, 08:24     Titel:
  Antworten mit Zitat      
Hallo Jan,

Mein Signal sieht typischerweise so aus wie auf der Zeischnung. Jedoch besteht eine Messdatei bei mir typischerweise nicht aus 3 sondern eher aus 10^3 Events und ich möchte einen herausschneiden.

Also das Signal rauscht typischerweise bei 0 und wird dann ab und an ausgelenkt.

mfg

Zeichnung.png
 Beschreibung:
typischer Verlauf

Download
 Dateiname:  Zeichnung.png
 Dateigröße:  7.12 KB
 Heruntergeladen:  402 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.12.2015, 10:33     Titel:
  Antworten mit Zitat      
Hallo camoesas,

Welchen "einen" möchtest Du herausschneiden und was bedeutet "herausschneiden"? Soll als Ergebnis von den 1000 Peaks nur noch 999 übrig bleiben? Oder möchtest Du das Intervall suchen, dessen Verlauf dem Mittelwert der Peaks möglichst nahe kommt?

Zitat:
Also das Signal rauscht typischerweise bei 0 und wird dann ab und an ausgelenkt.

Kannst Du genauer beschreiben, was Du möchtest? Um einen Programm-Code für Matlab zu erstellen, benötigt man eine mathematisch exakte Definition des gesuchten Musters. Vielleicht geht es um alle Signale, die einen bestimmten Wert überschreiten. In der Zeichnung fehlt aber eine Beschriftung der Achsen, und damit ist es kein "Diagramm", sondern eher ein Elefant, der eine Riesenschlange verschluckt hat. ;-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
camoesas
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.04.10
Wohnort: München
Version: R2013a
     Beitrag Verfasst am: 14.12.2015, 10:57     Titel:
  Antworten mit Zitat      
Hey Jan,

ich will von den 1000 Events 999 wegschmeißen und mir eines genauer anschauen. Ich gehe davon aus, dass die 1000 Events gleich sind und möchte daher nur eines herausgreifen um es zu verarbeiten. Die Funktion soll ein einzelnes Event herausgreifen und die Messspur so zuschneiden, dass der Rest wegfällt. (bzw. den Bereich ausgeben, zuschneiden kann ich ja auch selber).

Wenn ich eine mathematisch exakte Charakterisierung hätte bräuchte ich ja keine Messspur mehr einlesen. Razz

So viel ist bekannt: Das Signal ist 0, bei jedem Event erfolgt ein steiler Anstieg auf einen Wert der in etwa konstant gehalten wird, danach ein geringerer Wert und dann wieder etwa 0.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.12.2015, 12:27     Titel:
  Antworten mit Zitat      
Hallo camoesas,
Zitat:
ich will von den 1000 Events 999 wegschmeißen und mir eines genauer anschauen. Ich gehe davon aus, dass die 1000 Events gleich sind und möchte daher nur eines herausgreifen um es zu verarbeiten.

Ausdrücke wie "wegschmeißen" sind zwar umgangssprachlich verständlich, führen aber bei einer Diskussion über Matlab nicht zum Ziel. Ab welcher Grenze genau möchtest Du das Signal abschneiden?

Zitat:
Wenn ich eine mathematisch exakte Charakterisierung hätte bräuchte ich ja keine Messspur mehr einlesen. :-P

Wenn man keine mathematische exakte Charakterisierung hat, wo nach man sucht, ist es unmöglich die Aufgabe von Matlab lösen zu lassen. "Finde mal, was ich suche" lässt sich nicht programm-technisch umsetzen.

Zitat:
So viel ist bekannt: Das Signal ist 0, bei jedem Event erfolgt ein steiler Anstieg auf einen Wert der in etwa konstant gehalten wird, danach ein geringerer Wert und dann wieder etwa 0.

Das gezeigte Signal ist nicht 0, sondern es rauscht. "In etwas konstant gehalten" bringt nichts. Kannst du einen Mittelwert und eine Standard-Abweichung bestimmen? Kennst Du das Frequenz-Spektrum des Rauschens? Gilt alles oberhalb eines bestimmten Schwellenwertes als "Event"?

Die Leser können nicht ahnen, ob die gesuchten "Peaks" auch mal um den Faktor 1000 höher oder länger sein können. Es ist weder implizit eindeutig noch für Matlab als Programm verfassbar, zu erkennen was "typisch" ist an dem Signal.

Gruß, Jan
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: 14.12.2015, 12:30     Titel:
  Antworten mit Zitat      
Ist die Frequenz der Wiederholung bekannt -> einfach. Kehrwert ist die Periodendauer und mit der kann man dann einfach das Signal aussschneiden. Sehr simples Beispiel:

Code:

t=0:0.1:20;
Y=sin(t);
T=6.3
Y_cut=Y(1:63);
plot(0:0.1:6.2,Y_cut)
 


Fall die Frequenz nicht bekannt ist -> rausfinden. Das geht glaube ich mit Kreuzkorrelation des Signales mit sich selbst.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 13.04.10
Wohnort: München
Version: R2013a
     Beitrag Verfasst am: 22.12.2015, 16:19     Titel:
  Antworten mit Zitat      
Servus,

also ich habs jetzt gelöst, wenn auch sehr pragmatisch:
1. Damit ich nicht mitten in einer Auslenkung bin starte ich mit einer Schleife, die meinen "Cursor" bzw. meinen Schleifenindex an eine Position setzt, bei dem mein Signal null ist.
2. Dann suche ich weiter bis das Signal ansteigt
3. Von hier suche ich den Punkt, bei dem mein Signal wieder dauerhaft null ist.

Dazu der Code:
Code:
   % ausschneiden eines Events
    indexStart = 1;
    while meinSignal(indexStart)>=1
          indexStart = indexStart+1;
    end
    for s1=indexStart:1:length(meinSignal)
       if (meinSignal(s1:s1+100)>=0)
           if (meinSignal(s1+80:s1+100)>=2)
               break;
           end
       end
    end
    indexStart = s1-50;
    while meinSignal(s1)<=10
          s1 = s1+1;
    end
    for s2=s1:1:length(meinSignal)
        if (meinSignal(s2-100:s2)<=1)
            break;
        end
    end
    indexStopp = s2+50;
   
    plot(time(indexStart:indexStopp),meinSignal(indexStart:indexStopp))


Wahrscheinlich gehts schicker aber so klappts....

Frohe Weihnachten!
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 - 2025 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.