From eb74a371c9d9b59e4f807a931ccc9e7537606408 Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Fri, 2 Sep 2011 13:24:38 +0000 Subject: [PATCH] Matlab scripts useful for parsing the output from DataLog parseLog.m parses DataLog files. maxUnwrap.m unwraps number sequences, useful for unwrapping e.g. RTP timestamp sequences and RTP sequence numbers. Review URL: http://webrtc-codereview.appspot.com/135006 git-svn-id: http://webrtc.googlecode.com/svn/trunk@521 4adac7df-926f-26a2-2b94-8c16560cd09d --- tools/matlab/maxUnwrap.m | 25 ++++++++++++++++++++++ tools/matlab/parseLog.m | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 tools/matlab/maxUnwrap.m create mode 100644 tools/matlab/parseLog.m diff --git a/tools/matlab/maxUnwrap.m b/tools/matlab/maxUnwrap.m new file mode 100644 index 000000000..276c9523a --- /dev/null +++ b/tools/matlab/maxUnwrap.m @@ -0,0 +1,25 @@ +function sequence = maxUnwrap(sequence, max) +% +% sequence = maxUnwrap(sequence, max) +% Unwraps when a wrap around is detected. +% +% Arguments +% +% sequence: The vector to unwrap. +% max: The maximum value that the sequence can take, +% and after which it will wrap over to 0. +% +% Return value +% +% sequence: The unwrapped vector. +% + +% 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. + +sequence = round((unwrap(2 * pi * sequence / max) * max) / (2 * pi)); diff --git a/tools/matlab/parseLog.m b/tools/matlab/parseLog.m new file mode 100644 index 000000000..6cc455061 --- /dev/null +++ b/tools/matlab/parseLog.m @@ -0,0 +1,45 @@ +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); +parsed = struct; +i = 1; +while i <= length(table.colheaders) + % Checking for a multi-value column. + m = regexp(table.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(table.colheaders{i}) + % Parse a single-value column + parsed.(strrep(table.colheaders{i}, ' ', '_')) = table.data(:, i); + i = i + 1; + else + error('Error: Empty column'); + end +end