summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/tools_webrtc/matlab/parseLog.m
blob: 5d4c3f7bc1ab201ff966d47a98ad789fb9c7c4b2 (plain)
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
function parsed = parseLog(filename)
%
% parsed = parseLog(filename)
% Parses a DataLog text file, with the filename specified in the string
% filename, into a struct with each column name as a field, and with the
% column data stored as a vector in that field.
%
% Arguments
%
% filename: A string with the name of the file to parse.
%
% Return value
%
% parsed: A struct containing each column parsed from the input file
%         as a field and with the column data stored as a vector in that 
%         field.
%

% Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
%
% Use of this source code is governed by a BSD-style license
% that can be found in the LICENSE file in the root of the source
% tree. An additional intellectual property rights grant can be found
% in the file PATENTS.  All contributing project authors may
% be found in the AUTHORS file in the root of the source tree.

table = importdata(filename, ',', 1);
if ~isstruct(table)
  error('Malformed file, possibly empty or lacking data entries')
end

colheaders = table.textdata;
if length(colheaders) == 1
  colheaders = regexp(table.textdata{1}, ',', 'split');
end

parsed = struct;
i = 1;
while i <= length(colheaders)
  % Checking for a multi-value column.
  m = regexp(colheaders{i}, '([\w\t]+)\[(\d+)\]', 'tokens');
  if ~isempty(m)
    % Parse a multi-value column
    n = str2double(m{1}{2}) - 1;
    parsed.(strrep(m{1}{1}, ' ', '_')) = table.data(:, i:i+n);
    i = i + n + 1;
  elseif ~isempty(colheaders{i})
    % Parse a single-value column
    parsed.(strrep(colheaders{i}, ' ', '_')) = table.data(:, i);
    i = i + 1;
  else
    error('Empty column');
  end
end