Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Ingenieur (m/w) für den Bereich modellbasierte Embedded-Softwareentwicklung
Integration von Simulink-Modellen auf die Ziel-Hardware (mit TargetLink) sowie Durchführung von Softwaretests
cbb-Software GmbH - Stuttgart

Informatiker (m/w) für den Bereich Toolkette Embedded Software
Weiterentwicklung einer MATLAB- / Simulink-Toolkette
cbb-Software GmbH - Stuttgart

PreMaster MEMS pressure sensor development
You will define the characterization standards in collaboration with sensor experts and project managers
Robert Bosch GmbH - Reutlingen

Gruppenleiter Entwicklung Algorithmik / Machine Vision (m/w)
Weiterentwicklung und Optimierung existierender Algorithmen
SICK AG - Reute bei Freiburg im Breisgau

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Plotverschiebung - denselben Zeitpunkt bei allen Verläufen

 

mk443
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2017, 15:20     Titel: Plotverschiebung - denselben Zeitpunkt bei allen Verläufen
  Antworten mit Zitat      
Hallo liebe Matlab Community,

ich sitze vor einem mittelschweren Problem.
Ich habe 120 Verläufe eines Signals, die alle zu unterschiedlichen Zeitpunkten beginnen, da der Startpunkt der Messung manuell erfolgte. Die Verläufe sehen jedoch im Grunde ähnlich aus. Jetzt möchte ich, dass alle Verläufe zum selben Zeitpunkt starten, also quasi alle Verläufe sollen den gleichen Start haben.

Wozu das ganze?
Anhand dieser Verläufe muss ich andere Kurvenverläufe bearbeiten. Vielleicht mal besser anhand von Bildern gezeigt und exemplarisch nur anhand von 4 Verläufen dargestellt:

Signal1: 4 Durchläufe
Signal2: 4 Durchläufe

Wie ihr seht, ist Signal1 (die 4 Durchläufe meine ich) verschoben. Um dieselbe Verschiebung ist auch Signal2 (auch hier die 4 Durchläufe gemeint) verschoben. Da es später bei Mittelung dann zu Fehlern kommt, möchte ich das gern ändern.

Könnt ihr mir dabei behilflich sein?

Vielen lieben Dank im Voraus.

Grüße Anabelle

So ist mein Code bisher:

Code:
clear all;
clc;

accO25P101 = linspace(1, 1, 163840);
accO25P102 = linspace(1, 1, 163840);
accO25P103 = linspace(1, 1, 163840);
accO25P104 = linspace(1, 1, 163840);

O25P101_rpm = linspace(1, 1, 163840);
O25P102_rpm = linspace(1, 1, 163840);
O25P103_rpm = linspace(1, 1, 163840);
O25P104_rpm = linspace(1, 1, 163840);

load('O25P1-1.mat','Channel_6_Data');
accO25P101=Channel_6_Data;
load('O25P1-2.mat','Channel_6_Data');
accO25P102=Channel_6_Data;
load('O25P1-3.mat','Channel_6_Data');
accO25P103=Channel_6_Data;
load('O25P1-4.mat','Channel_6_Data');
accO25P104=Channel_6_Data;

load('O25P1-1.mat','Channel_7_Data');
O25P101_rpm=Channel_7_Data;
load('O25P1-2.mat','Channel_7_Data');
O25P102_rpm=Channel_7_Data;
load('O25P1-3.mat','Channel_7_Data');
O25P103_rpm=Channel_7_Data;
load('O25P1-4.mat','Channel_7_Data');
O25P104_rpm=Channel_7_Data;

hold on
plot(accO25P101);
plot(accO25P102);
plot(accO25P103);
plot(accO25P104);

figure
hold on
plot(O25P101_rpm);
plot(O25P102_rpm);
plot(O25P103_rpm);
plot(O25P104_rpm);


acc.jpg
 Beschreibung:
Signal2

Download
 Dateiname:  acc.jpg
 Dateigröße:  78.44 KB
 Heruntergeladen:  40 mal
rpm.jpg
 Beschreibung:
Signal1

Download
 Dateiname:  rpm.jpg
 Dateigröße:  129.09 KB
 Heruntergeladen:  44 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 01.11.2017, 15:38     Titel:
  Antworten mit Zitat      
Hallo,

das einfachste dürfte sein, den Anfangszeitpunkt abzuziehen, z.B.
Code:
t = t - t(1);


Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2017, 15:41     Titel:
  Antworten mit Zitat      
Hallo Harald,

woher weiß ich, wann der Anfangszeitpunkt ist?
Also anhand der Kurve sehe ich ihn zwar, aber das wäre wahrscheinlich etwas ungenau. Gibt es eine Funktion, die mir bei jedem Durchlauf des Signal1 ausgibt, wann der erste Ausschlag erfolgt?

Anabelle 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 01.11.2017, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
woher weiß ich, wann der Anfangszeitpunkt ist?

Es mag jetzt komisch klingen, aber das musst schon du wissen.
Eine Möglichkeit könnte sein: der erste Zeitpunkt, zu dem das Signal einen bestimmten Schwellwert überschreitet.

Code:
start = find(abs(signal) > schwellwert, 1);
t = t - t(start);


Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2017, 15:57     Titel:
  Antworten mit Zitat      
Der Anfangszeitpunkt ist halt leider stets anders, mal bei 0,2 Sekunden, mal bei 2 Sekunden und dazwischen. Ich frage mich halt, ob ich das programmieren kann, damit ich bei 120 Kurven weiß, wann jede Kurve ihr 1. Signal bekommt (dieses ist immer negativ).

Leider bin ich nicht so versiert im Umgang mit Matlab. 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 01.11.2017, 16:43     Titel:
  Antworten mit Zitat      
Hallo,

ich habe dir doch eben einen entsprechenden Vorschlag gemacht.
Das einzige, was du nun noch tun musst, ist: den Vorschlag auf deine Signale anwenden. Alternativ beschreiben, inwiefern der Vorschlag nicht wie gewünscht funktioniert.

Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2017, 16:52     Titel:
  Antworten mit Zitat      
ok, ich habe den Schwellwert mit -0,2 festgesetzt.
Hier der Code:

Zitat:
schwellwert = -0.3;
start = find(abs(O25P101_rpm) > schwellwert, 1);


start wird mir im Workspace jetzt mit 1 angezeigt

Damit kann ich leider so gar nichts anfangen.
Bin total verwirrt.

Grüße Anabelle

Zitat:
t = t - t(start);

Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 01.11.2017, 17:51     Titel:
  Antworten mit Zitat      
Hallo,

schau dir doch mal an, was abs macht. Ein Betrag wird nie negativ sein. Du solltest als Schwellwert also 0.2 oder 0.3 nehmen.

Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2017, 18:27     Titel:
  Antworten mit Zitat      
WOW super ...

jetzt kriege ich einen Startwert. So weit so gut Wink
Daaaaaanke
Wie verschiebe ich jetzt aber beide Verläufe so, dass sie quasi beide bei Null beginnen?

Anabelle 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 01.11.2017, 19:33     Titel:
  Antworten mit Zitat      
Hallo,

auch das hatte ich dir schon geschrieben:
Code:
t = t - t(start);


Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2017, 13:14     Titel:
  Antworten mit Zitat      
Was genau soll t sein?

Sad

Ich verstehe das irgendwie nicht.

Anabelle 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 02.11.2017, 20:56     Titel:
  Antworten mit Zitat      
Hallo,

t steht für time, also den zugehörigen Zeitvektor.

Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2017, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

den Faktor "time" habe ich bereits in Verwendung. Harald, du meinst also, dass der Faktor "t" neu zugewiesen werden muss? Das klingt iwie einleuchtend. Das probiere ich nachher mal aus. Wie aber sage ich, dass der "neue" Verlauf der Kurve (nicht der Zeitvektor) auch vernünftig als Variable gespeichert wird. Also, nehmen wir an, dass die Variable P1 um den Starwert nach links oder rechts verschoben werden muss. Dann gibt es ja einen neuen Startwert. D. h. die Variable P1 sollte dann quasi ja neu beschrieben werden, sodass nicht nur für den plot der Startwert gilt, sondern auch die Variable mit dem errechnetem Startwert beginnt.
Versteht man, was ich meine?! Oh Gott, ich kann soooo schlecht erklären.

Grüße Anabelle 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.648
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 03.11.2017, 14:50     Titel:
  Antworten mit Zitat      
Hallo,

ich zumindest verstehe es nicht so wirklich.

Grundsätzlich sehe ich zwei Möglichkeiten:
a) nur den Zeitvektor wie vorgeschlagen verschieben. Mit den Daten muss dann gar nichts gemacht werden.
b) zusätzlich den Teil vor Beginn des Signals abschneiden. Das ginge mit:
Code:
time(1:start-1) = [];
signal(1:start-1) = [];


Grüße,
Harald 
Private Nachricht senden Benutzer-Profile anzeigen
 
mk443
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 01.11.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2017, 16:47     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Geduld.

Ich habe mal einen Screenshot angehängt. Ich verstehe noch nicht, wie der Zusammenhang zw. den beiden Verläufen hergestellt wird. Ich arbeite ja immer nur mit einem Signal. Mein Ziel ist ja Quasi, jetzt vorerst 2 Kurven zu verschieben, sodass sie den selben Startpunkt haben.

Gruß Anabelle 

test.jpg
 Beschreibung:
Screenshot

Download
 Dateiname:  test.jpg
 Dateigröße:  197.68 KB
 Heruntergeladen:  43 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3  Weiter

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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.