|  | 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 |