ECG-Kit 1.0
(1,535 bytes)
%PRLOAD Similar to LOAD matfile, but converts old datasets, datafiles, mappings
%
% PRLOAD(FILE)
% S = PRLOAD(FILE)
function out = prload(file,varargin)
warning('off','MATLAB:unknownObjectNowStruct');
warning('off','MATLAB:indeterminateFields');
warning('off','MATLAB:unknownElementsNowStruc');
warning('off','MATLAB:elementsNowStruc');
ppath = path;
ss = which(['data' 'set']); % avoid conversion to prdataset in prtools5
if ~isempty(ss) & isempty(strfind(ss,'prtools'))
rmpath(fileparts(fileparts(ss)));
end
if isempty(varargin)
%DXD: we need an exception because load only wants to accept strings:
s = load(file);
else
s = load(file,varargin{:});
end
path(ppath);
if ~isstruct(s)
if nargout > 0
out = s;
else
[pp,varname,ext] = fileparts(file);
assignin('caller',varname,s);
end
return
end
fields = fieldnames(s);
for j=1:numel(fields)
x = getfield(s,fields{j});
if isa(x,'dataset')
% we are trapped by Matlab's dataset
% assume we have an old-fashioned prtools4 dataset
x = struct(x);
end
if isstruct(x)
if isfield(x,'mapping_file')
x = prmapping(x);
elseif isfield(x,'rootpath')
x = prdatafile(x);
elseif isfield(x,'labtype')
x = prdataset(x);
elseif isfield(x,'ll')
x = prdataset(x);
end
end
s = setfield(s,fields{j},x);
end
if nargout > 0
out = s;
else
for j=1:numel(fields)
assignin('caller',fields{j},getfield(s,fields{j}));
end
end