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