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

Bogenlänge über die Zeit von einer Messreihe bestimmen

 

doehr
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 00:33     Titel: Bogenlänge über die Zeit von einer Messreihe bestimmen
  Antworten mit Zitat      
Hallo zusammen,

ich bin ein absoluter Neuling mit Matlab und habe auch gleich eine für mich schier unlösbare Aufgabe. Ich habe eine Messreihe aufgenommen, die eine Oberfläche über die Zeit aufnimmt. Während der Aufnahme wird die Oberfläche deformiert. Ich bekomme also entlang der x-Achse (Oberfläche im Profil) jeweils die y-Position der Oberfläche und das ganze über insgesamt 140 frames pro Aufnahme. Ich möchte nun die Bogenlänge der Oberfläche pro Frame bestimmen. Problem hierbei ist, dass am Anfang die Oberfläche eine Parabel ist und ab einem bestimmten Zeitpunkt die Oberfläche aber einer Polynomfunktion 4. Grades folgt. Aus diesem Grund kann ich das Ganze auch nicht mehr in Excel machen, da meine Integrationsfähigkeiten schon bei der Quadratischen Funktion fast am Ende waren.

Kann mir dazu jemand helfen?

Vielen Dank schon mal.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ist so schwierig vorstellbar - insbesondere wie bei einer Oberfläche eine Bogenlänge bestimmt werden soll. Grundsätzlich würde ich Messreihen mit trapz integrieren.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 18:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort. Die Oberfläche wird im Profil erfasst also immer nur ein kleiner horizontaler Bereich der gesamten Oberfläche.
Die Matrix der Messreihe sieht dann so aus

t x -4mm -3mm -2mm -1mm 0mm 1mm 2mm 3mm 4mm
0ms und hier werden die y-
1ms Werte an jedem x über die
2ms Zeit aufgenommen
3ms

Was ich jetzt ausrechnen möchte, ist die Bogenlänge zu jedem Zeitpunkt.

Ich habe es jetzt schon über die Fkt cumtrapz versucht, aber es funktioniert leider nicht. Dies liegt glaub ich daran, dass ich die Tabellen nicht richtig hinbekomme. Hast du mit der Funktion und so einer Matrix eine Idee?

Vielen Dank für deine Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2015, 18:10     Titel:
  Antworten mit Zitat      
Hallo,

dann zeig doch bitte mal, was du versucht hast und welche Probleme dabei genau aufgetreten sind - am besten anhand von Beispieldaten und mit erwarteten Ergebnissen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 18:22     Titel:
  Antworten mit Zitat      
Ich habe folgendes Versucht:

Code:
dz = z(2)-z(1);
dx = gradient(x,dz);                              
dy = gradient(y,dz);
ds = hypot(dx, dy);                                
cum_arclength = cumtrapz(z, ds);                      
tot_arclength = cum_arclength(end);    


Hier bekomme ich die Fehlermeldung:

>> createFit Error using cumtrapz (line 71) LENGTH(X) must equal the length of Y in dim 2.
Error in createFit (line Cool cum_arclength = cumtrapz(z, ds);

Problem zusätzlich ist noch, dass ich es mit der Lösung für jeden Zeitpunkt per Hand ausrechnen müsste.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2015, 18:25     Titel:
  Antworten mit Zitat      
Hallo,

im Workspace kannst du die Dimensionen der Variablen sehen und damit auch, wieso es zu der Fehlermeldung kommt. Wenn du Daten zur Verfügung stellst, kann man sich das auch anschauen.
Und wenn du ohnehin nur das letzte Ergebnis von cumtrapz brauchst, kannst du auch gleich trapz verwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 18:32     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Hilfe! Im Anhang findest du die Datei.

Bogenlaenge.m
 Beschreibung:

Download
 Dateiname:  Bogenlaenge.m
 Dateigröße:  469 Bytes
 Heruntergeladen:  420 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2015, 19:39     Titel:
  Antworten mit Zitat      
Hallo,

sei mir nicht böse, aber was soll ich denn jetzt bitte mit der Datei? Was x, y, z sind, weiß ich jetzt genauso wenig wie vorher.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 19:54     Titel:
  Antworten mit Zitat      
Entschuldige, Ich habe gerade erst gesehen, dass die Datei nicht mit dran hängt. Kannst du sie öffnen?

bogenlaenge.mat
 Beschreibung:

Download
 Dateiname:  bogenlaenge.mat
 Dateigröße:  578.45 KB
 Heruntergeladen:  421 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2015, 20:06     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt, schau dir die Dimensionen an. z sind 140 Werte, ds sind 572 - das kann nicht zusammenpassen.

Die entscheidende Frage ist auch: willst du einen Pfad entlang der Zeit integrieren? Falls z die Zeit ist, müsstest du zu jedem z-Wert x- und y-Werte liefern.
Oder willst du (so habe ich es verstanden) für jeden z-Wert entlang x integrieren? Dann müsste das z im cumtrapz-Befehl ein x sein.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 20:31     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für deine Antwoet. Die Länge 140 bezieht sich auf die Zeitachse und 572 auf die x-Achse. Die Zeit besteht insgesamt aus 140 Frames bei der jeweils die y-Position der Oberfläche entlang des Profils (572 Teilstücke) aufgezeichnet wurde.
Die x-Werte sind somit immer die selben. Die y Werte sind Variable.
Ich möchte so wie du sagst für jeden Zeit-Wert entlang x-integrieren und am ende die Bogenlänge pro Zeitpunkt rausbekommen. Das funktioniert nun auch, ich in cumtrapz das x einsetzte.

Wie kann ich es nun hinbekommen nicht für jeden Zeitpunkt das ganze per Hand reinzukopieren, sondern das gleich die gesamten y-Reihen analysiert werden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.10.2015, 20:47     Titel:
  Antworten mit Zitat      
Hallo,

mit einer for-Schleife

Code:
tot_arclen = zeros(size(z));
for I = 1:numel(z)
    dz = z(2)-z(1);
    dx = gradient(x,dz);                                
    dy = gradient(yAll(I, :),dz);
    ds = hypot(dx, dy);                                
    cum_arclen = cumtrapz(x, ds);                      
    tot_arclen(I) = cum_arclen(end);                      
end

grid
plot(z, tot_arclen)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 03.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.10.2015, 21:19     Titel:
  Antworten mit Zitat      
Prima, vielen lieben Dank! Funktioniert einwandfrei! Ganz lieben Dank nochmal für die Hilfe.
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.