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

Zeiten im Signal auslesen(Stufen)

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 07.03.2019, 13:41     Titel: Zeiten im Signal auslesen(Stufen)
  Antworten mit Zitat      
Hallo Leute,
habe ein Signal (siehe Anhang).

Ich würde mir gerne die Zeiten auslesen an der jede neue Stufe beginnt (rote markierung).

Leider weiß ich nicht wie ich das anstellen soll.. ist doch was anderes als einfache Rechtecksignale.

Danke euch im Voraus.



(Es handelt sich hier um ein Messsignal mit ca. 2.000.000 Werten)

LG

2019-03-07_13-32-19.png
 Beschreibung:

Download
 Dateiname:  2019-03-07_13-32-19.png
 Dateigröße:  13.38 KB
 Heruntergeladen:  383 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 14:27     Titel:
  Antworten mit Zitat      
Hallo,

letztlich musst du ein Kriterium angeben, was eine Stufe sein soll und was nicht. Das musst du aus der Anwendung heraus entscheiden. Warum ist z.B. nach der letzten eingezeichneten Stufe keine mehr?
Anschließend kann man das mit logischer Indizierung umsetzen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 07.03.2019, 14:43     Titel:
  Antworten mit Zitat      
Hallo,

hmm ja was ich auch überlegt habe... ist das ich das Signal von 2.000.001 Werte auf ca. 100 reduziere und dann mit diff und find arbeite.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 15:05     Titel:
  Antworten mit Zitat      
Hallo,

ich denke nicht, dass man das dafür vorab reduzieren muss.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 07.03.2019, 15:22     Titel:
  Antworten mit Zitat      
Wenn ich jetzt z.B.
Code:


eingebe erhalte ich fast nur 0 da diese an den flachen konstant ist und komischerweise erkennt er da nichts an veränderung und somit ist der gesamte Vektor dann 0.


wenn ich das ganze reduziere funktioniert es.

Eine Lösung hierfür?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 15:24     Titel:
  Antworten mit Zitat      
Hallo,

ist doch wunderbar, wenn du fast nur 0 bekomst? Du brauchst ja die Stellen, an denen der Unterschied nicht 0 ist, und die bekommst du z.B. mit find. Wenn das erst mal relativ wenige sind, um so besser.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 07.03.2019, 16:37     Titel:
  Antworten mit Zitat      
So hab mal ein Beispiel erstellt um es etwas verständlicher zu machen

Code:

LengthDrehzahl = length(Drehzahl);
SS = LengthDrehzahl/100000;

D100 = Drehzahl(1:SS:end);
T100 = 1:1:length(D100);

figure
plot(T100, D100)
grid on;
hold on;

DiffD100 = diff((flipud(D100)));
FindD100Pos = find(abs(DiffD100) > 0);


for i= 1:length(FindD100Pos)
    plot(T100(1,FindD100Pos(i,1)), D100(FindD100Pos(i,1),1),'ro')
end


for i = 1:length(FindD100Pos)
    if(i < length(FindD100Pos))
        EndSegment = find(t_Drehzahl == T100(1,FindD100Pos(i,1)));
        StartSegment = find(t_Drehzahl == T100(1,FindD100Pos(i+1,1)));
       
        Segment1{1,i} = Drehzahl(EndSegment:StartSegment);
    end
   
end
 


Ich brauche immer die Zeit für den Anfang und das Ende einer horizontalen Fläche. Wenn ich aber nur nach find(x>0) suche habe ich viel zu viele Punkte weil die Werte an diesen Stellen nicht zu 100% konstant verlaufen.

matlab.mat
 Beschreibung:
Diese Datei vorher in das Workspace laden.

Download
 Dateiname:  matlab.mat
 Dateigröße:  43.64 KB
 Heruntergeladen:  460 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.03.2019, 17:09     Titel:
  Antworten mit Zitat      
Hallo,

dann nimm doch einen höheren Schwellwert, z.B.
Code:
FindD100Pos = find(abs(DiffD100) > 10);


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 08.03.2019, 16:29     Titel:
  Antworten mit Zitat      
Leider bringt mich das nicht zum Ziel.

Im Anhang findest du zwei Bilder einmal mit 10 und mit 0.

2019-03-08_16-29-22.png
 Beschreibung:
Mit > 10

Download
 Dateiname:  2019-03-08_16-29-22.png
 Dateigröße:  32.28 KB
 Heruntergeladen:  381 mal
2019-03-08_08-57-30.png
 Beschreibung:
Mit > 0

Download
 Dateiname:  2019-03-08_08-57-30.png
 Dateigröße:  48.16 KB
 Heruntergeladen:  374 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2019, 16:01     Titel:
  Antworten mit Zitat      
Hallo,

wenn du dir die Daten genau ansiehst, stellst du fest, dass der Sprung nicht von einem Datenpunkt zum anderen erfolgt, sondern allmählich. Da bietet es sich an zu schauen, ob es eine Veränderung über die letzten 100 Werte gegeben hat.

Code:
LengthDrehzahl = length(Drehzahl);
SS = round(LengthDrehzahl/100000);

D100 = Drehzahl(1:SS:end);
T100 = 1:1:length(D100);

figure
plot(T100, D100)
grid on;
hold on;

DiffD100 = D100(101:end) - D100(1:end-100);
FindD100Pos = find(abs(DiffD100) > 10);

FindD100Pos(diff(FindD100Pos) == 1) = []; %aufeinanderfolgende Sprünge löschen

plot(T100(1,FindD100Pos), D100(FindD100Pos,1),'ro') %for-Schleife ist unnötig
hold off


Sollte schon mal ein Schritt in die richtige Richtung sein. Nun musst du weiter experimentieren und vor allem muss klar sein, was denn nun ein Sprung ist und was nicht (siehe ursprüngliche Rückfrage)

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.