[717926]: / MATLAB / private / isKinMatchingModelCoords.m

Download this file

60 lines (53 with data), 2.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
%-------------------------------------------------------------------------%
% Copyright (c) 2019 Modenese L. %
% %
% Licensed under the Apache License, Version 2.0 (the "License"); %
% you may not use this file except in compliance with the License. %
% You may obtain a copy of the License at %
% http://www.apache.org/licenses/LICENSE-2.0. %
% %
% Unless required by applicable law or agreed to in writing, software %
% distributed under the License is distributed on an "AS IS" BASIS, %
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or %
% implied. See the License for the specific language governing %
% permissions and limitations under the License. %
% %
% Author: Luca Modenese %
% email: l.modenese@imperial.ac.uk %
% ----------------------------------------------------------------------- %
function [out, missing_coords_list] = isKinMatchingModelCoords(osimModel, headers_in_struct)
% OpenSim suggested settings
import org.opensim.modeling.*
OpenSimObject.setDebugLevel(3);
% getting model coordinates and their number
coordsModel = osimModel.updCoordinateSet();
N_coordsModel = coordsModel.getSize();
% check if coordinates are the same (sometimes time is also here)
if any(strcmp('time', headers_in_struct))
coordsNames_in_struct = headers_in_struct(~strcmp('time', headers_in_struct));
else
coordsNames_in_struct = headers_in_struct;
end
n_miss = 1;
n_matched = 1;
coordNames = {};
missing_coords_list = {};
for n = 0:N_coordsModel-1
%extracting the column for the state variable of interest
cur_coordName = char(coordsModel.get(n).getName());
if find(strcmp(cur_coordName, coordsNames_in_struct)) == n+1
coordNames{n_matched} = cur_coordName;
n_matched = n_matched+1;
else
missing_coords_list{n_miss} = cur_coordName;
n_miss = n_miss+1;
end
end
if length(coordNames) == length(coordsNames_in_struct)
out = 1;
return
else
warning('Coordinate structure and model are NOT properly matched (coordinates and their order).');
out = 0;
end
end