pyomeca / ezc3d

Easy to use C3D reader/writer for C++, Python and Matlab
https://pyomeca.github.io/Documentation/ezc3d/index.html
MIT License
142 stars 44 forks source link

Matlab rotation data #290

Closed schoondw closed 1 year ago

schoondw commented 1 year ago

Hi,

In a previous thread I reported that a huge amount of rotation segments were created when initiating the c3d data with ezc3dRead (without argument) based on version 1.5.3.

I now tested this with 1.5.4, and the size of rotations was 4x4x1x0 when initiating, as expected.

However, when I read a file with only analog data, the size of rotations was 4×4×140711718551552×0. This is not critical since the number of frames is 0, but perhaps it is worth looking into.

When reading a file that contains rotations, the data is parsed correctly.

Let me know in case you need more information or the file.

BR, Erwin (Qualisys)

schoondw commented 1 year ago

I checked again, and it looks different in the data viewer. Here a picture showing the data structure in the Matlab terminal and the data viewer.

The arrays are empty, but the only problem is it will not be possible to concatenate anything that is not compatible with the dimensions. Not a big deal, because it is easy to replace it, but it would be best to initiate empty data just as [], without assuming any predefined dimensions. The same also applies to points.

ezc3d-rotations

BR, Erwin

pariterre commented 1 year ago

Hi @schoondw !

Thanks for reporting! 4x4x1x0 is not the expected size, 4x4x0x0 is. The 1.5.3 and 1.5.4 both have this bug already fixed. The issue with the other guy was that ezc3d was already silently installed in his OpenSim installation (they ship the 1.5.0 version). To confirm that, we removed the "ezc3d.dll" file in the toolbox folder, but "ezc3dRead()" could be called just fine anyway. If you have OpenSim installed on you computer, I suspect this is the problem!

schoondw commented 1 year ago

Hi @pariterre ,

Thanks for your reply. I tried again and it turns out it works as it should (with 4x4x0x0 size indeed!) after restarting Matlab.

Thanks, Erwin