how to make a timestamp for plotting out of (m:s:ms) ?

7 vues (au cours des 30 derniers jours)
Kaan Inal
Kaan Inal le 19 Sep 2021
Commenté : Kaan Inal le 23 Sep 2021
Hello,
I have an application which gets timevalues ( minutes,seconds,milliseconds) over TCP. This values are generated inside the module which sends data to matlab.
Now i want to convert this values to a timestamp to do some plotting. How can I archive this?
I tried this:
%save Data in Matrix
%make timestamp for plotting data.
timestamp = datetime(0,0,0,0,app.minute,app.second,app.millisecond);
%Save data in matrice for further operations(plotting,saving)
app.x(app.counter,:)=[timestamp,accx,accy,accz,eulx,euly,eulz];
app.counter = app.counter + 1;
But it didn't work.
Thank you very much.
  2 commentaires
Siddharth Bhutiya
Siddharth Bhutiya le 21 Sep 2021
Just based on the information in your question, it seems that you are working with time periods rather than date times. So it seems logical to use duration instead of datetime.
timestamp = duration(0,app.minute,app.second,app.millisecond);
What are the data types of your other values (app.x, accx, accy, eulz, etc.) assuming they are doubles, then you are trying to mix different types in an array which is not supported. When trying to store heterogeneous types you could use table or better timetables since your data seems to be timestamped.
It is difficult to infer a lot just from few lines of code. If you are still stuck then please include some sample data on what each value described in your code looks like and also the exact errors that you are getting. Having more context about the code and data would make it easier for people to provide suggestions.
Kaan Inal
Kaan Inal le 23 Sep 2021
Thank you very much!
I now used array2timetable like this
%create timetable
array2timetable(app.BNO055Messung(:,4:13),'Samplerate',100,"VariableNames",{'acc_x','acc_y','acc_z','eul_x','eul_y','eul_z','quat_w','quat_x', 'quat_y', 'quat_z'});
%save table as .txt file
saveTimeTable(app,app.BNO055TimeTable,app.TimeTableEditField.Value);
Now i have a .tx file looking like this:
Time,acc_x,acc_y,acc_z,eul_x,eul_y,eul_z,quat_w,quat_x,quat_y,quat_z
0 sec,-0.36,-0.4,9.39,6.875,-1.8125,2.5,0.997802734375,-0.02130126953125,0.017333984375,-0.0599365234375
0.01 sec,-0.35,-0.38,9.38,6.875,-1.8125,2.5,0.997802734375,-0.02130126953125,0.017333984375,-0.0599365234375
0.02 sec,-0.33,-0.39,9.38,6.875,-1.8125,2.5,0.997802734375,-0.02130126953125,0.017333984375,-0.0599365234375
Now i want to LOAD this txt file and save it again in a variable of type timetable for plotting and analysis.
But the following code doesnt work:
TT = readtimetable(app.FilenameEditField.Value,"RowTimes",'Time',"DurationType","duration");
Error message: Error using readtimetable (line 284)
Row times must be datetime or duration vector.
Thank you for your help!

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by