]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/tests/TestFtsp/Ftsp/FtspDataAnalyzer.m
Merge TinyOS 2.1.1 into master.
[tinyos-2.x.git] / apps / tests / TestFtsp / Ftsp / FtspDataAnalyzer.m
diff --git a/apps/tests/TestFtsp/Ftsp/FtspDataAnalyzer.m b/apps/tests/TestFtsp/Ftsp/FtspDataAnalyzer.m
new file mode 100755 (executable)
index 0000000..94dda15
--- /dev/null
@@ -0,0 +1,60 @@
+%load file written out by FtspDataLogger.java class\r
+%arg0 - filename, e.g. '1205543689171.report'\r
+function FTSPDataAnalyzer(file, varargin)\r
+[c1 c2 c3 c4 c5]= textread(file, '%u %u %u %u %u', 'commentstyle', 'shell');\r
+data = [c2 c3 c4 c5]; %skipping the first column (java time)\r
+data1 = sortrows(sortrows(data,1),2);\r
+newdata = [];\r
+\r
+row=1;\r
+newrow=1;\r
+unsynced=0;\r
+while (row<=size(data1,1))\r
+\r
+    seqnum=data1(row,2);\r
+\r
+    data2=[];\r
+    row2=1;\r
+    tmprow1=row;\r
+    while (row <= size(data1,1) && data1(row,2)==seqnum)\r
+        if (data1(row,4)==0)\r
+            data2(row2,1)=data1(row,3);\r
+            row2= row2+ 1;\r
+        else\r
+            unsynced=unsynced+1;\r
+        end\r
+        row = row + 1;\r
+    end\r
+    \r
+    if (row2>1)\r
+        row2size=row2-1;\r
+        rcvdsize=row-tmprow1;\r
+        newdata(newrow,1) = seqnum;\r
+        newdata(newrow,2) = mad(data2(1:row2size,1));\r
+        newdata(newrow,3) = mean(data2(1:row2size,1));\r
+        newdata(newrow,4) = row2size/rcvdsize;\r
+        newrow = newrow + 1;\r
+    end\r
+end\r
+\r
+if (length(newdata)==0)\r
+    disp('no data found (at least one data point from a synchronized mote is required)!');\r
+else\r
+    newsize=newrow-1;\r
+    subplot(3,1,1);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,2));\r
+    title(sprintf('TimeSync Errors'));\r
+    subplot(3,1,2);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,3));\r
+    title(sprintf('Avg Glob Time'));\r
+    subplot(3,1,3);\r
+    plot(newdata(1:newsize,1),newdata(1:newsize,4),'b-');\r
+    title(sprintf('%% Synced Motes'));\r
+\r
+    disp(sprintf('total unsycned num %d (all %d)',unsynced,newsize));\r
+    disp(sprintf('avg %0.3f',mean(newdata(1:newsize,2))));\r
+    disp(sprintf('max %d',max(newdata(1:newsize,2))));\r
+    savedata = newdata(1:newsize,:);\r
+    save data.out savedata -ASCII;\r
+end\r
+    
\ No newline at end of file