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

Vergleich der nachfolgenden Perioden mit der ersten Periode

 

Spoony0987
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 10:37     Titel: Vergleich der nachfolgenden Perioden mit der ersten Periode
  Antworten mit Zitat      
Guten Morgen zusammen,

mir stellt sich folgendes Problem:
Ich habe Messdaten einer Maschine bei der die Genauigkeit der X- und Y-Achse ermittelt werden sollen. Dabei gibt es gewisse Voraussetzungen an die Maschine wie genau diese sein muss. Nun geht es um die Wiederholungsfehler.
Dabei sollen die IST-Werte betrachtet werden (Messdaten).
Fährt die Anlage nun eine Kontur, ganz egal welche zB 100 mal ab, so bekommt man theoretisch und grafisch 100 gleiche aufeinander folgende Schwingungen.
Um zu ermitteln wie groß die Wiederholungsfehler sind, soll nun die zweite bis die n-te Schwingung immer einzeln mit der ersten Schwinung bzw. Periode verglichen werden.

Vorgestellt habe ich mir, dass ich aus der Ist-Wert-Positionsmatrix (welche durch die Messdatei gegeben ist) herausfinde wie lang überhaupt die Periode ist. Dann die erste Schwingung ermittle in dem ich den Wendepunkt von der ersten auf die zweite Schwingung ermittle und durch das abziehen der Periodendauer die erste Schwingung in ein neuen Spaltenvektor auslese.
Dieser Vektor/erste Schwingung möchte ich dann ab diesem Wendepunkt zur zweiten Schwingung mit einer Schleife mit jeder weiteren Schwingung vergleichen (abziehen) und bei jedem Vergleichen.

Soweit so gut.
Jetzt ist allerdings mein Problem, dass die Messung oft vor dem Testlauf gestartet wird und ich am Anfang Messpunkte habe bei dem das System steht. Da außer dem das ganze keine theoretische Schwingung sondern eine praktische ist also Real bzw. Istwerte lässt sich nicht sehr einfach die Periodendauer herauslesen.

Ich würde euch gern zeigen was ich bis her programmiert habe, bzw. welchen Lösungsvorschlag ich habe, allerdings weiß ich nicht genau wie ich anfangen soll und wie ich das ganze angehen soll....

Wenn Ihr mir vielleicht einen Denkanstoß, Ideen oder vielleicht sogar einen Vorschlag geben könntet wäre ich euch sehr dankbar! Im Inet ist dazu leider nichts zu finden...
Gerne nehme ich auch einen anderen Ansatz an Smile

Euch schonmal vielen Dank im Voraus, dass Ihr überhaupt den langen Text gelesen habt und dann auch noch versucht mir zu helfen Wink

Grüße Spoony
_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 10:53     Titel:
  Antworten mit Zitat      
Zitat:
Jetzt ist allerdings mein Problem, dass die Messung oft vor dem Testlauf gestartet wird und ich am Anfang Messpunkte habe bei dem das System steht.

was genau ist daran das problem? du kannst du alle messwerte wegschneiden die auftreten bevor ein bestimmter messwert das erste mal überschritten wird.
Zitat:
Da außer dem das ganze keine theoretische Schwingung sondern eine praktische ist also Real bzw. Istwerte lässt sich nicht sehr einfach die Periodendauer herauslesen.
vielleicht eine schwingungsanalyse um die frequenzen deines systems zu bestimmen? alternativ kannst du ja wie gesagt immer eine bestimmte position +- schwellwert als start der neuen periode benutzen.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 11:34     Titel:
  Antworten mit Zitat      
Hallo Winkow,

ich habe um einen Ansatz zu finden das ganze mal versucht mit den Sollwerten anzugehen. Nun habe ich sozusagen die aller ersten Werte der zweispalten Matrix ausgelesen und kann damit sagen, dort fängt die Testfahrt an.
Nun hatte ich auch die Idee, zu sagen dass der erste Punkt der Ist-Matrix der dem Startpunkt der Soll-Matrix am nächsten kommt mein Startwert ist.
Weiß nur noch nicht genau wie ich das Programmieren soll.

Die Matrix zu schneiden, bzw die ersten Zeilen rauswerfen hab ich auch noch keine Erfahrung und habe es auch auf die schnelle nicht hinbekommen. Nun ist der Startwert x=225 und y= -50 dann kommen etwa 100 weitere Zeilen x=225 und y=-50 und dann verändert sich der erste Wert nun würde ich gern alle wegschneiden bis ein Wert vor dem ersten Veränderten.

Einschlüssenwort bzw Funktion für die Näherung wäre auch noch gut zu wissen Smile

Vielen Dank schonmal
_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 11:53     Titel:
  Antworten mit Zitat      
du könntest mit diff arbeiten und gucken ob irgendwo die differenz zweier werte einen schwellwert überschreitet. oder halt ob der wert selber einen schwellwert überschreitet. mit find findet man dann den index und schneidet alles davor weg
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 13:47     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
du könntest mit diff arbeiten und gucken ob irgendwo die differenz zweier werte einen schwellwert überschreitet. oder halt ob der wert selber einen schwellwert überschreitet.


So nachdem ich jetzt fast zwei Stunden versucht habe mich mit dem diff auseinander zu setzen und das anzuwenden, muss ich jetzt doch nochmal fragen bevor ich verzweifel wie das dann programmiert wird...Da merk ich dann dass ich doch noch blutige Anfänger im Matlab bin Embarassed

Winkow hat Folgendes geschrieben:

mit find findet man dann den index und schneidet alles davor weg

Soweit bin ich zwar deswegen noch nicht, aber hast mir hierzu auch gleich ein Programmiervorschlag?

So hab ichs bisher versucht
Code:
A = rand(50,2);
B = rand(1,2);
for i = 1:length(A);
C = diff(A(i),B);
end

aber das ist vermutlich total falsch Laughing

Übrigends nochmals vielen Dank dass du deine Zeit opferst und dich mit meinen Problemen rumschlägst Rolling Eyes

Gruß
_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 14:37     Titel:
  Antworten mit Zitat      
ob diff klappt oder nicht hängt von deinem signal ab.
hier mal ein beispiel für den schwellwert:
Code:
t=linspace(0,100);
y(1:20)=rand(1,20)*0.1;
y(21:100)=sin(pi*(t(21:100)-20)/5);
idt=find(abs(y)>0.2,1)
t1=t(idt:end);
y1=y(idt:end);
figure(1)
subplot(2,1,1)
plot(t,y)
subplot(2,1,2)
plot(t1,y1)

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 16:15     Titel: Wie finde ich jetzt das Ende der Periode
  Antworten mit Zitat      
Soooo,

also den ersten Punkt hätte ich gefunden, hab bisschen rumprobiert und gebastelt...
weiß zwar nicht ob das jetzt so elegant gelöst ist aber es funktioniert. Hab es erst Versucht in der zwei Spalten Matrix zu machen, aber bin dann doch auf Vektoren umgestiegen weil ichs in der Matrix nicht hinbekommen habe...

Code:
%% Datenpunkte laden
load('XY_550_5_2D')
%% Vektorerstellung bzw. Matrixaufsplittung
x = abs(PosFbk(:,1));           % Erstellung eines Vektors der
                                % absoluten Positionsfeedback der X-Achse
                               
y = abs(PosFbk(:,2));           % Erstellung eines Vektors der
                                % absoluten Positionfeedback der Y-Achse
SPtheox = PosFbk(1,1);          % Theoretische Startpunkte
SPtheoy = PosFbk(1,2);

    I1=find(y>SPtheoy,1);       % Möglicher Startpunkt
    I2=find(x>SPtheox,1);       % Möglicher Startpunkt
    if   I1<=I2;
         I =I2;
    else
         I =I1;                 % Startpunkt der Periode
    end
   
SP=PosFbk(I-1,:);               % Ein Punkt Bevor Anlage los fährt als Vektor


Datei dazu hab ich angehängt.

Nun frag ich mich allerdings wie ich das Ende der Periode finde? Bzw, wie kann ich nun den zweiten Punkt in der Schwingung finden der diesen Kriterien entspricht?

Danke schon mal!
Gruß

XY_550_5_2D.mat
 Beschreibung:

Download
 Dateiname:  XY_550_5_2D.mat
 Dateigröße:  4.34 MB
 Heruntergeladen:  397 mal

_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 16:35     Titel:
  Antworten mit Zitat      
hmm ich würde das bei den daten so machen:
mittelpunt der bestimmen. also mean(x) mean(y)
dann punkte in radius und winkel in bezug zu diesem punkte aufteilen. und anhand des winkels ( atan2 ) kannst du dann ja leicht sagen ab wann er einmal rum ist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 16:47     Titel:
  Antworten mit Zitat      
Winkow hat Folgendes geschrieben:
hmm ich würde das bei den daten so machen:
mittelpunt der bestimmen. also mean(x) mean(y)

Hm Mittelpunkt der was?

Winkow hat Folgendes geschrieben:
dann punkte in radius und winkel in bezug zu diesem punkte aufteilen. und anhand des winkels ( atan2 ) kannst du dann ja leicht sagen ab wann er einmal rum ist.


Okay das hab ich jetzt glaub ich alles nicht so richtig begriffen Sad
Kannst du mir vielleicht ein Code-Beispiel vorgeben, dann kann ichs vielleicht mit der Hilfe versuchen zu verstehen

Trotzdem schonmal Danke
_________________

Cheers Patrick
B. Eng.
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 15.10.2015, 17:02     Titel:
  Antworten mit Zitat      
Okay das mit den Mittelpunkten bzw der Mittelwerte habe ich begriffen... aber beim zweiten hakt es noch ^^
_________________

Cheers Patrick
B. Eng.
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: 15.10.2015, 17:11     Titel:
  Antworten mit Zitat      
Code:
x=[1 2 2 1 1];
y=[1 1 2 2 1];
xm=mean(x);
ym=mean(y);
xnew=x-xm;
ynew=y-ym;
r=sqrt(xnew.^2+ynew.^2);
alpha=atan2(ynew,xnew);
plot(r.*cos(alpha),r.*sin(alpha))
xlim([-1,1])
ylim([-1,1])

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 19.10.2015, 15:36     Titel:
  Antworten mit Zitat      
Hey,

also ich muss gestehen dass mich das nicht wirklich weiter bringt...
Vielleicht liegt es auch nur daran dass Montag ist, mir ist zwar klar dass du damit Polarkoordinaten bekommst, was ich dadurch aber gewonnen habe bzw. wie ich dadurch feststellen kann wann ich die Kontur einmal abgefahren habe verstehe ich nicht?? Question

Ist dieser Weg überhaupt auch möglich wenn ich eine komplexere Kontur hab statt nur ein Rechteck??

Und wie muss ich das programmieren, dass ich seh wann die Periode zu ende ist?

Habe vorhin mal versucht zu sagen sobald beide Koordinaten den Koordinaten von dem Startpunkt der Periode bzw Kontur am ähnlichsten sind das rauszulesen, aber da bin ich durch mein niedriges Matlabniveau wohl gescheitert bis her...
Danke dir schonmal,
Grüße
_________________

Cheers Patrick
B. Eng.
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: 19.10.2015, 15:43     Titel:
  Antworten mit Zitat      
du kannst doch am winklel ablesen ob du einmal rum bist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Spoony0987
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 13.10.15
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 19.10.2015, 16:46     Titel:
  Antworten mit Zitat      
Ja schon, aber ich habe dadurch doch nichts gewonnen??
Wenn die Kontur zB wie eine schlange wäre, dann müsste ich ja auch prüfen ob nicht nur der Winkel wieder gleich ist sondern auch der Radius müsste wieder gleich sein, und die beiden Bedingungen zur gleichen Zeit.

Da beides aber nicht unbedingt genau gleich sein wird müsste ich da auch wieder eine Näherung machen.

Aber das könnte ich doch genaus auch mit den X und Y Koordinaten, sobald die beide wieder gleich bzw. extrem ähnlich sind wie die vom Periodenstart dann ist die Kontur einmal rum.

Aber wie ich das in Matlab Konstruieren muss, dafür ging heut ohne Ergebnis ein ganzer Tag drauf Sad

Hast du mir da vielleicht ein Lösungsvorschlag??
Gruß und vielen Dank
_________________

Cheers Patrick
B. Eng.
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: 19.10.2015, 17:01     Titel:
  Antworten mit Zitat      
Code:
load('XY_550_5_2D')
%% Vektorerstellung bzw. Matrixaufsplittung
x = abs(PosFbk(:,1));           % Erstellung eines Vektors der
                                % absoluten Positionsfeedback der X-Achse
                               
y = abs(PosFbk(:,2));           % Erstellung eines Vektors der
                                % absoluten Positionfeedback der Y-Achse
SPtheox = PosFbk(1,1);          % Theoretische Startpunkte
SPtheoy = PosFbk(1,2);

    I1=find(y>SPtheoy,1);       % Möglicher Startpunkt
    I2=find(x>SPtheox,1);       % Möglicher Startpunkt
    if   I1<=I2;
         I =I2;
    else
         I =I1;                 % Startpunkt der Periode
    end
   
SP=PosFbk(I-1,:);               % Ein Punkt Bevor Anlage los fährt als Vektor
%%
subplot(2,1,1)
X=x(I:end);
Y=y(I:end);
plot(X,Y)
subplot(2,1,2);

xm=mean(X);
ym=mean(Y);
r=sqrt((Y-ym).^2+(X-xm).^2);
alpha=atan2(Y-ym,X-xm);
plot(1:numel(alpha),alpha)

 

ich finde den winkel besser als als die x und y kooridnaten zu vergleichen.
dein beispiel mit der schlange verstehe ich nicht. deine angehängten daten sehen nicht aus wie eine schlange.
ich sehe hier nur probleme wenn dein graph aus winkelsicht zwischenzeitlich rückwärts läuft.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  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
.





 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.