Home | History | Annotate | Download | only in matlab
      1 function parsed = parseLog(filename)
      2 %
      3 % parsed = parseLog(filename)
      4 % Parses a DataLog text file, with the filename specified in the string
      5 % filename, into a struct with each column name as a field, and with the
      6 % column data stored as a vector in that field.
      7 %
      8 % Arguments
      9 %
     10 % filename: A string with the name of the file to parse.
     11 %
     12 % Return value
     13 %
     14 % parsed: A struct containing each column parsed from the input file
     15 %         as a field and with the column data stored as a vector in that 
     16 %         field.
     17 %
     18 
     19 % Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
     20 %
     21 % Use of this source code is governed by a BSD-style license
     22 % that can be found in the LICENSE file in the root of the source
     23 % tree. An additional intellectual property rights grant can be found
     24 % in the file PATENTS.  All contributing project authors may
     25 % be found in the AUTHORS file in the root of the source tree.
     26 
     27 table = importdata(filename, ',', 1);
     28 if ~isstruct(table)
     29   error('Malformed file, possibly empty or lacking data entries')
     30 end
     31 
     32 colheaders = table.textdata;
     33 if length(colheaders) == 1
     34   colheaders = regexp(table.textdata{1}, ',', 'split');
     35 end
     36 
     37 parsed = struct;
     38 i = 1;
     39 while i <= length(colheaders)
     40   % Checking for a multi-value column.
     41   m = regexp(colheaders{i}, '([\w\t]+)\[(\d+)\]', 'tokens');
     42   if ~isempty(m)
     43     % Parse a multi-value column
     44     n = str2double(m{1}{2}) - 1;
     45     parsed.(strrep(m{1}{1}, ' ', '_')) = table.data(:, i:i+n);
     46     i = i + n + 1;
     47   elseif ~isempty(colheaders{i})
     48     % Parse a single-value column
     49     parsed.(strrep(colheaders{i}, ' ', '_')) = table.data(:, i);
     50     i = i + 1;
     51   else
     52     error('Empty column');
     53   end
     54 end
     55