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

Bei Winkelsprung von 360° auf 0°-->360° addieren

 

equi
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 18.07.2017, 14:43     Titel: Bei Winkelsprung von 360° auf 0°-->360° addieren
  Antworten mit Zitat      
Hallo zusammen,

ich nehme von einer rotierenden Achse die Werte über die Zeit auf.
Die meine Messwerte springen nach einer Umdrehung (360°) wieder auf 0° zurück.
Gemessen wird unterschiedlich, somit kann es sein das bei 359,6° und anschließend bei 0,3° gemessen wird als Beispiel.

Was ich tun möchte:
Ich möchte damit meinen Werte nach einem "Sprung" automatisch +360° addiert wird. Nach 2 mal umlaufen der Achsen soll 2x360° addiert werden usw...

Code:
 
   O=(diff(B(:,2))<0); % 2. Spalte von B enthält die Grad-Zahlen;; Ermittlung des Sprungs mittels X(2)-X(1)
   P=find(O); % hier suche ich die Stellen heraus bei denen es den Sprung gibt
   P=P+1; % hier füge ich bei P eins hinzu, da die Punkte die bei diff herauskommen X(1) entsprechen, also quasi bei 360° sind, ich aber erst ab 0° 360° addieren will
   B(P(1,1):(P(2,1)-1),2)=B(P(1,1):(P(2,1)-1),2)+3.6e6; % hier addiere ich 360° bei der 2. Umdrehung
   B(P(2,1):(P(3,1)-1),2)=B(P(2,1):(P(3,1)-1),2)+2*3.6e6; % hier addiere ich 720° bei der 3. Umdrehung


Das ganze funktioniert auch. Nur ich möchte quasi die letzten 2 Zeilen ersetzen, damit mein Programm automatisch erkennt, damit es 360° oder 720° oder 1080° (usw.) hinzufügen soll.


EDIT: nicht von dem 3.6e6 irritieren lassen, dass entspricht 360°, ist nur wegen der Skalierung des Messprogramms e6
_________________

Grüße Equi Smile
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: 18.07.2017, 16:47     Titel: Re: Bei Winkelsprung von 360° auf 0°-->360° addieren
  Antworten mit Zitat      
Hallo equi,

Wie wäre dies:

Code:
Index = find(diff(B(:,2))<0) + 1;
for k = 1:numel(Index)
  B(Index(k):end, 2) = B(Index(k):end, 2) + 3.6e6;
end

Jetzt werden ab jedem 0-Durchgang bis zum Ende 360 Grad dazu gezählt. Das ist zwar nicht effizient, da man viele Elemente mehrfach erhöht, aber wenn das nicht Milliarden von Messwerten sind, sollte es doch nur ein paar Sekunden-Bruchteile benötigen.
Effizienter:
Code:
Index = find(diff(B(:,2))<0) + 1;
Add = zeros(size(B, 1), 1);
Add(Index) = 1;
Add = cumsum(Add) * 3.6e6;
B(:, 2) = B(:, 2) + Add;

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

Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 07.03.17
Wohnort: Tübingen
Version: Matlab 2018a
     Beitrag Verfasst am: 19.07.2017, 07:14     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort, ist genau das, was ich suche Smile
Funktioniert einwandfrei Smile

Dankeschön Smile
_________________

Grüße Equi Smile
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.