1 | %fname='20140127/data_SPESO_2014-01-27_21-15-31_dec.txt.gz' |
---|
2 | %basename='./'; |
---|
3 | |
---|
4 | % loadDataFile('20140306/data_SPESO_2014-03-06_15-39-52_dec.txt.gz') |
---|
5 | |
---|
6 | function [data,rateValue,timeCorrection]=loadDataFile(fname) |
---|
7 | basename='./'; |
---|
8 | |
---|
9 | %%% Check if the file name starts with the directory |
---|
10 | if (strcmp(fname(1:3),'201')) |
---|
11 | disp('Name is OK') |
---|
12 | else |
---|
13 | if (strcmp(fname(1:4),'data')) |
---|
14 | fname = [ fname(12:15) fname(17:18) fname(20:21) '/' fname ]; |
---|
15 | disp('fname rewritten as'); |
---|
16 | fname |
---|
17 | else |
---|
18 | fname |
---|
19 | disp('Unknown name format... This may not be OK!!!'); |
---|
20 | end |
---|
21 | end |
---|
22 | |
---|
23 | filename=[ basename fname ]; |
---|
24 | [res,txt]=system(['gzip -d -c ' filename ]); |
---|
25 | if (~(res==0)) |
---|
26 | error([ 'Error while opening file ' filename '. Error code: ' num2str(res) ]) |
---|
27 | end |
---|
28 | |
---|
29 | rangename=strrep(filename,'_dec','_range'); |
---|
30 | [res,txtrange]=system(['gzip -d -c ' rangename ]); |
---|
31 | if (~(res==0)) |
---|
32 | error([ 'Error while opening file ' rangename '. Error code: ' num2str(res) ]) |
---|
33 | end |
---|
34 | |
---|
35 | base_save_file_name=strrep(strrep(filename,'_dec.txt.gz',''),char(10),''); |
---|
36 | |
---|
37 | |
---|
38 | if (strcmp(txtrange(1:5),'rate=')) |
---|
39 | rateValue=str2num(txtrange(6:end)); |
---|
40 | else |
---|
41 | txtrange(1:5) |
---|
42 | error('Incorrect range file'); |
---|
43 | end |
---|
44 | |
---|
45 | %error('test') |
---|
46 | |
---|
47 | %size(txt) |
---|
48 | |
---|
49 | %char(txt) |
---|
50 | |
---|
51 | tAfterTriger=0.02; |
---|
52 | |
---|
53 | data=str2num(char(txt)); |
---|
54 | nData=size(data,1); |
---|
55 | |
---|
56 | durationOneSample=(rateValue*16/(2*3e8))*1.0426; %1/s |
---|
57 | %samplesOneMsec=0.001/(rateValue*16/(2*3e8)); |
---|
58 | samplesOneMsec=0.001/(durationOneSample); |
---|
59 | timeRange=[1:nData]*durationOneSample; |
---|
60 | |
---|
61 | timeInMsBetweenTrigger=320; |
---|
62 | |
---|
63 | |
---|
64 | %%%Fit 50Hz on the trigger line |
---|
65 | clear x |
---|
66 | beta(1)=mean( data(:,16)); |
---|
67 | beta(2)=max( data(:,16))-min(data(:,16)); |
---|
68 | beta(3)=1/(20*samplesOneMsec/(2*pi)); |
---|
69 | beta(4)=-250; |
---|
70 | betaInit=beta; |
---|
71 | beta=nlinfit(1:nData, smooth(data(:,16))', @(b,x)(b(1)+b(2).*sin(b(3).*x + b(4))), beta) |
---|
72 | figure(9016) |
---|
73 | clf |
---|
74 | xRange=1:1*20*samplesOneMsec; |
---|
75 | hold on |
---|
76 | plot(xRange, data(xRange,16)','r') |
---|
77 | plot(xRange,(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b') |
---|
78 | plot(xRange,(betaInit(1)+betaInit(2).*sin(betaInit(3).*xRange + betaInit(4))), 'g') |
---|
79 | xRange2=xRange+ceil((500*samplesOneMsec)); |
---|
80 | plot(xRange, data(xRange2,16)','--r') |
---|
81 | plot(xRange,(beta(1)+beta(2).*sin(beta(3).*xRange2 + beta(4))), '--b') |
---|
82 | plot(xRange,(betaInit(1)+betaInit(2).*sin(betaInit(3).*xRange2 + betaInit(4))), '--m') |
---|
83 | |
---|
84 | xRange=1:nData; |
---|
85 | sum(abs(data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))))) |
---|
86 | |
---|
87 | |
---|
88 | figure(9116) |
---|
89 | clf |
---|
90 | xRange=1:10*20*samplesOneMsec; |
---|
91 | hold on |
---|
92 | plot(xRange,data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b') |
---|
93 | |
---|
94 | figure(9216) |
---|
95 | clf |
---|
96 | xRange=1:nData; |
---|
97 | hold on |
---|
98 | plot(xRange,data(xRange,16)'-(beta(1)+beta(2).*sin(beta(3).*xRange + beta(4))), 'b') |
---|
99 | |
---|
100 | iloop=16; |
---|
101 | figure(9300+iloop) |
---|
102 | clf |
---|
103 | hold on |
---|
104 | plotRange=[ceil(326*samplesOneMsec):ceil(327*samplesOneMsec)]; |
---|
105 | plotRange=[ceil(0.001*samplesOneMsec):ceil(30*samplesOneMsec)]; |
---|
106 | plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange + beta(4))),'r') |
---|
107 | plotRange2=plotRange+ceil(timeInMsBetweenTrigger*samplesOneMsec); |
---|
108 | plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'b') |
---|
109 | plotRange2=plotRange2+ceil(timeInMsBetweenTrigger*samplesOneMsec); |
---|
110 | plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'g') |
---|
111 | plotRange2=plotRange2+ceil(timeInMsBetweenTrigger*samplesOneMsec); |
---|
112 | plot(plotRange*(rateValue*16/(2*3e8)),data(plotRange2,iloop)'-(beta(1)+beta(2).*sin(beta(3).*plotRange2 + beta(4))),'c') |
---|
113 | grid on |
---|
114 | |
---|
115 | % beta(3)-betaInit(3) |
---|
116 | timeCorrection=beta(3)/betaInit(3) |
---|
117 | % 2*(beta(3)-betaInit(3))/(beta(3)+betaInit(3)) |
---|
118 | |
---|
119 | |
---|
120 | %%% Correct the timing taking into account the 50Hz fit |
---|
121 | durationOneSample=durationOneSample*timeCorrection; %1/s |
---|
122 | %samplesOneMsec=0.001/(rateValue*16/(2*3e8)); |
---|
123 | samplesOneMsec=0.001/(durationOneSample); |
---|
124 | timeRange=[1:nData]*durationOneSample; |
---|
125 | |
---|
126 | |
---|
127 | pAfterTrigger=ceil(20*samplesOneMsec); |
---|
128 | |
---|
129 | %for iloop=[16 8 12 15 13 10 14 ] |
---|
130 | for iloop=1:16 |
---|
131 | |
---|
132 | figure(iloop) |
---|
133 | clf |
---|
134 | plot(pAfterTrigger:nData,data(pAfterTrigger:end,iloop)) |
---|
135 | grid on |
---|
136 | print('-dpng',[ base_save_file_name '_channel_' num2str(iloop) '.png' ]); |
---|
137 | |
---|
138 | |
---|
139 | % for tloop=1:4 |
---|
140 | for tloop=1:-1 |
---|
141 | allStartTimeMs=[ 20 30 38 40] ; |
---|
142 | allEndTimeMs=[ 200 75 45 41]; |
---|
143 | |
---|
144 | startTimeMs=allStartTimeMs(tloop); |
---|
145 | endTimeMs=allEndTimeMs(tloop); |
---|
146 | |
---|
147 | figure((tloop*100)+iloop) |
---|
148 | clf |
---|
149 | hold on |
---|
150 | title({strrep(fname,'_',' ');['Plot from ' num2str(startTimeMs) ' ms to ' num2str(endTimeMs) ' ms']}); |
---|
151 | nTriggerPlusTime=floor(((nData)-(endTimeMs*samplesOneMsec))/(timeInMsBetweenTrigger*samplesOneMsec)); |
---|
152 | for jloop=1:nTriggerPlusTime |
---|
153 | plotRange=[ceil(startTimeMs*samplesOneMsec):ceil(startTimeMs*samplesOneMsec)+(endTimeMs-startTimeMs)*samplesOneMsec]; |
---|
154 | dataRange=plotRange+floor(((jloop-1)*(timeInMsBetweenTrigger*samplesOneMsec))); |
---|
155 | plot(plotRange*durationOneSample,data(dataRange,iloop),getCol(jloop)) |
---|
156 | end |
---|
157 | grid on |
---|
158 | if ((tloop==1)||(tloop==4)) |
---|
159 | print('-dpng',[ base_save_file_name '_channel_' num2str(iloop) '_folded_from_' num2str(startTimeMs) 'ms_to_' num2str(endTimeMs) '_ms.png' ]); |
---|
160 | end |
---|
161 | end |
---|
162 | |
---|
163 | |
---|
164 | end %function |
---|