-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReadAndCalibrateYEIData.m
72 lines (67 loc) · 2.91 KB
/
ReadAndCalibrateYEIData.m
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
61
62
63
64
65
66
67
68
69
70
71
72
function CalibratedData = ...
ReadAndCalibrateYEIData(data)
progressbar('Reading All Data', ...
'Current Directory');
i = 1;
for j = 1:length(data)
fid = fopen(strcat(data(j).Directory, '/FileData.csv'));
FileInformation = ...
textscan(fid, '%s%d%f%f', 'delimiter', ',');
fclose(fid);
for k = 1:length(FileInformation{1})
fid = fopen(FileInformation{1}{k});
%% Read data
if(strcmp(data(j).Format, 'Text'))
RawInputData = textscan(fid, ...
'%d%d%f%f%f%f%f%f%f%f%f%f%f%f%f%f', ...
'Whitespace', ', :', 'HeaderLines', 1);
UncalibratedData(i).TimeInMS = RawInputData{4};
UncalibratedData(i).XGyro = RawInputData{14};
UncalibratedData(i).YGyro = RawInputData{15};
UncalibratedData(i).ZGyro = RawInputData{16};
elseif(strcmp(data(j).Format, 'Binary'))
RawInputData = textscan(fid, ...
'%d%f%f%f%f%f%f', ...
'Whitespace', ', :', 'HeaderLines', 0);
UncalibratedData(i).TimeInMS = RawInputData{1};
UncalibratedData(i).XGyro = RawInputData{2};
UncalibratedData(i).YGyro = RawInputData{3};
UncalibratedData(i).ZGyro = RawInputData{4};
end
fclose(fid);
%% Calibrate
CalibratedData(i).Filename = ...
FileInformation{1}{k};
CalibratedData(i).Run = FileInformation{2}(k);
CalibratedData(i).TimeInSeconds = ...
ConvertChipMSTimeToSeconds(...
double(UncalibratedData(i).TimeInMS));
load(data(j).CalibrationFile);
CalibratedData(i).XGyro = ...
(UncalibratedData(i).XGyro - XFit(1) ) * XFit(2);
CalibratedData(i).YGyro = ...
(UncalibratedData(i).YGyro - YFit(1)) * YFit(2);
CalibratedData(i).ZGyro = ...
(UncalibratedData(i).ZGyro - ZFit(1)) * ZFit(2);
%% Select relevant times
TimeSelectorIndices = 1:length(CalibratedData(i).TimeInSeconds);
TimeSelector = ...
TimeSelectorIndices(CalibratedData(i).TimeInSeconds > ...
FileInformation{3}(k) & CalibratedData(i).TimeInSeconds < ...
FileInformation{4}(k));
CalibratedData(i).TimeInSeconds = ...
CalibratedData(i).TimeInSeconds(TimeSelector);
CalibratedData(i).TimeInSeconds = ...
CalibratedData(i).TimeInSeconds - ...
CalibratedData(i).TimeInSeconds(1); % start time at 0
CalibratedData(i).XGyro = ...
CalibratedData(i).XGyro(TimeSelector);
CalibratedData(i).YGyro = ...
CalibratedData(i).YGyro(TimeSelector);
CalibratedData(i).ZGyro = ...
CalibratedData(i).ZGyro(TimeSelector);
i = i + 1;
progressbar([ ], k / length(FileInformation{1}));
end
progressbar( j / length(data), [ ] );
end