 c853aa1735
			
		
	
	c853aa1735
	
	
	
		
			
			- colheaders doesn't appear in the struct returned from importdata for me. - Add a new error check for empty/malformed files. Review URL: http://webrtc-codereview.appspot.com/318001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1137 4adac7df-926f-26a2-2b94-8c16560cd09d
		
			
				
	
	
		
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Matlab
		
	
	
	
	
	
| 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
 |