Plotting datapoints with their time distance on x-axis

조회 수: 4 (최근 30일)
Kevin Pollmer
Kevin Pollmer 2022년 3월 31일
댓글: Kevin Pollmer 2022년 3월 31일
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!!

채택된 답변

Cris LaPierre
Cris LaPierre 2022년 3월 31일
편집: Cris LaPierre 2022년 3월 31일
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
Kevin Pollmer
Kevin Pollmer 2022년 3월 31일
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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by