Plotting datapoints with their time distance on x-axis

4 visualizaciones (últimos 30 días)
Hello everyone!
I want to ask something but i'm not sure if iteven possible to do that. I have data that looks like this (only a small part of it):
What my code does is getting the timedifference of each pair (sometimes there are 3 points, sometimes 4, but i'm only interested in the first and last one) and calculates the travelled distance between those points. The result looks like this (the red line is not of interest):
What i'm supposed to do is match the travelled distance to the timepoints above. If I have to describe the expected result, i would say the following: the travelled distance between aprox. 100.5s and 102s is 12cm, after that it is 16cm from 102s till 105s and so on.. I hope you get what I mean.
I attached the needed data in question.mat. To get the plots above i did the following:
load question.mat
r_Trommel = 1;
r_0=0.319;
kmh=15;
figure(1)
plot(t(index_1:index_2-1),Betrag_Ableitung);
hold on
plot(max_XWerte,max_YWerte,'mo');
hold off
k=1;
while (k>=1) && (k<=length(max_XWerte)-3)
if (abs(max_XWerte(k+3)-max_XWerte(k))> 0.05) && (abs(max_XWerte(k+3)-max_XWerte(k))< 0.08)
laenge(k) = abs(max_XWerte(k+3)-max_XWerte(k))*(kmh/3.6);
k = k+4;
elseif (abs(max_XWerte(k+2)-max_XWerte(k))>= 0.03) && (abs(max_XWerte(k+2)-max_XWerte(k))< 0.09)
laenge(k) = abs(max_XWerte(k+2)-max_XWerte(k))*(kmh/3.6);
k=k+3;
else
laenge(k) = abs(max_XWerte(k+1)-max_XWerte(k))*(kmh/3.6);
k=k+2;
end
end
for m=1:length(laenge)
if laenge(m) == 0
laenge(m) = laenge(m-1);
end
end
for f=1:length(laenge)
l_test(f)=100*(2*r_Trommel*asin(laenge(f)/(2*r_Trommel)));
end
x=0:1:length(l_test)-1;
figure(2)
plot(x,l_test)
Thank you in advance!!

Respuesta aceptada

Cris LaPierre
Cris LaPierre el 31 de Mzo. de 2022
Editada: Cris LaPierre el 31 de Mzo. de 2022
It's hard to say for certain, since you have not shown how the times correspond to your step plot, but here's some simple code that may get you close. It is wrong because max_XWerte has more elements than l_test, so the last few times in max_XWerte are not used.
load KPvars.mat % variables created by your code
% Find the index of each step change
step = [1 find(abs(diff(l_test))>0.0001)+1];
% use indeces to find the start and stop time of each step
start = max_XWerte(step(1:end-1));
stop = max_XWerte(step(2:end));
% use indices to find the corresponding distance traveled
dist = l_test(step(1:end-1))';
% Combine into a table
T = table(start,stop,dist)
T = 44×3 table
start stop dist ______ ______ ______ 100.54 102.69 12.508 102.69 107.72 16.686 107.72 110.6 12.508 110.6 112.77 20.871 112.77 113.49 12.508 113.49 117.07 8.3357 117.07 120.69 12.508 120.69 121.43 8.3357 121.43 125.02 12.508 125.02 126.41 8.3357 126.41 127.18 33.49 127.18 132.21 12.508 132.21 135.82 20.871 135.82 136.54 12.508 136.54 137.25 8.3357 137.25 140.11 12.508
  1 comentario
Kevin Pollmer
Kevin Pollmer el 31 de Mzo. de 2022
Thank you for the answer!
This might also solve the problem. The supervisor of my student research paper wanted to have a clear output of the time intervall and the calculated distance travelled . He mentioned a plot, but a table should be sufficient enough :D

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Line Plots en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by