Code covered by the BSD License  

Highlights from
Data Browser

image thumbnail
from Data Browser by Phil Larimer
A utility to browse data files that involve one or more channels of data over time.

msec2point(inString, pointsPerMsec)
function outString = msec2point(inString, pointsPerMsec)

[starts stops] = regexp(inString, 'data\(.*?[:)]');
[junk stops2] = regexp(inString, 'data\(.*?\)');

if length(starts) > 0
    if stops2(1) == stops(1)
		if isnan(str2double(inString(starts(1) + 5:stops(1) - 1)))
			% probably a logical
			outString = inString(1:stops(1) - 1);
		else
			% single number
			outString = [inString(1:starts(1) + 4) num2str(round((str2double(inString(starts(1) + 5:stops(1) - 1))) * pointsPerMsec))];
		end
	else
		% range
        outString = [inString(1:starts(1) + 4) num2str(round((str2double(inString(starts(1) + 5:stops(1) - 1))) * pointsPerMsec)) ':' num2str(round((str2double(inString(stops(1) + 1:stops2(1) - 1))) * pointsPerMsec))];
    end

    for i = 2:length(starts)
        if stops2(i) == stops(i)
			if isnan(str2double(inString(starts(i) + 5:stops(i) - 1)))
				outString = [outString inString(stops2(i - 1):stops(i) - 1)];
			else
				outString = [outString inString(stops2(i - 1):starts(i) + 4) num2str(round((str2double(inString(starts(i) + 5:stops(i) - 1))) * pointsPerMsec))];
			end
        else
            outString = [outString inString(stops2(i - 1):starts(i) + 4) num2str(round((str2double(inString(starts(i) + 5:stops(i) - 1))) * pointsPerMsec)) ':' num2str(round((str2double(inString(stops(i) + 1:stops2(i) - 1))) * pointsPerMsec))];     
        end
    end
    outString = [outString inString(stops2(end):end)];
else
    outString = inString;
end

Contact us at files@mathworks.com