Daniel@0: function val = get(a, propName) Daniel@0: % GET Get properties from the MIRdata object Daniel@0: % and return the value Daniel@0: Daniel@0: switch propName Daniel@0: case 'Pos' Daniel@0: val = a.pos; Daniel@0: case 'Data' Daniel@0: val = a.data; Daniel@0: case 'Unit' Daniel@0: val = a.unit; Daniel@0: case 'FramePos' Daniel@0: val = a.framepos; Daniel@0: case 'Framed' Daniel@0: val = a.framed; Daniel@0: case 'Sampling' Daniel@0: val = a.sr; Daniel@0: case 'NBits' Daniel@0: val = a.nbits; Daniel@0: case 'Name' Daniel@0: val = a.name; Daniel@0: case 'Name2' Daniel@0: val = a.name2; Daniel@0: case 'Label' Daniel@0: val = a.label; Daniel@0: case 'Channels' Daniel@0: val = a.channels; Daniel@0: case 'Clusters' Daniel@0: val = a.clusters; Daniel@0: case 'MultiData' Daniel@0: val = a.multidata; Daniel@0: case 'PeakPos' Daniel@0: val = a.peak.pos; Daniel@0: case {'PeakPosUnit','AttackPosUnit','ReleasePosUnit'} Daniel@0: switch propName Daniel@0: case 'PeakPosUnit' Daniel@0: pp = a.peak.pos; Daniel@0: case 'AttackPosUnit' Daniel@0: pp = a.attack.pos; Daniel@0: case 'ReleasePosUnit' Daniel@0: pp = a.release.pos; Daniel@0: end Daniel@0: po = a.pos; Daniel@0: d = a.data; Daniel@0: val = cell(1,length(pp)); Daniel@0: if isempty(d) Daniel@0: return Daniel@0: end Daniel@0: for k = 1:length(pp) Daniel@0: val{k} = cell(1,length(pp{k})); Daniel@0: if isempty(pp{k}) Daniel@0: nseg = 0; Daniel@0: elseif iscell(pp{k}{1}) Daniel@0: nseg = length(pp{k}); Daniel@0: else Daniel@0: nseg = 1; Daniel@0: end Daniel@0: for i = 1:nseg Daniel@0: ppi = pp{k}{i}; Daniel@0: if isempty(po) Daniel@0: poi = (1:size(d{k}{i},2))'; Daniel@0: elseif iscell(po{k}) Daniel@0: if isempty(po{k}) Daniel@0: poi = mean(a.framepos{k}{1})'; Daniel@0: elseif isempty(a.pos) Daniel@0: poi = po{k}{i}'; Daniel@0: elseif ischar(po{k}{1}) Daniel@0: poi = (1:length(po{k}))'; Daniel@0: else Daniel@0: poi = po{k}{i}; Daniel@0: end Daniel@0: else Daniel@0: for j = 1:size(po,3) Daniel@0: poi(:,:,j) = po{k}(:,:,j)'; Daniel@0: end Daniel@0: end Daniel@0: val{k}{i} = cell(size(ppi)); Daniel@0: for h = 1:size(ppi,3) Daniel@0: for j = 1:size(ppi,2) Daniel@0: if size(poi,3) > 1 && size(poi,1) == 1 Daniel@0: val{k}{i}{1,j,h} = ppi{1,j,h}; Daniel@0: else Daniel@0: val{k}{i}{1,j,h} = poi(ppi{1,j,h},1); Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: case 'PeakPrecisePos' Daniel@0: val = a.peak.precisepos; Daniel@0: case 'PeakVal' Daniel@0: val = a.peak.val; Daniel@0: case 'PeakPreciseVal' Daniel@0: val = a.peak.preciseval; Daniel@0: case 'PeakMaxVal' Daniel@0: pv = a.peak.val; Daniel@0: val = cell(1,length(pv)); Daniel@0: for h = 1:length(pv) Daniel@0: val{h} = cell(1,length(pv{h})); Daniel@0: for i = 1:length(pv{h}) Daniel@0: pvi = pv{h}{i}; Daniel@0: %if iscell(pvi) Daniel@0: % pvi = pvi{1}; % Segmented data not taken into consideration yet. Daniel@0: %end Daniel@0: val{h}{i} = zeros(1,length(pvi)); Daniel@0: for j = 1:length(pvi) Daniel@0: if isempty(pvi{j}) Daniel@0: val{h}{i}(1,j) = NaN; Daniel@0: else Daniel@0: val{h}{i}(1,j) = max(pvi{j}); Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: case 'PeakMode' Daniel@0: val = a.peak.mode; Daniel@0: case 'AttackPos' Daniel@0: if isempty(a.attack) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.attack.pos; Daniel@0: end Daniel@0: case 'ReleasePos' Daniel@0: if isempty(a.release) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.release.pos; Daniel@0: end Daniel@0: case 'TrackPos' Daniel@0: if isempty(a.track) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.track.pos; Daniel@0: end Daniel@0: case 'TrackPosUnit' Daniel@0: if isempty(a.track) Daniel@0: val = []; Daniel@0: else Daniel@0: pp = a.track.pos; Daniel@0: po = a.pos; Daniel@0: d = a.data; Daniel@0: val = cell(1,length(pp)); Daniel@0: for k = 1:length(pp) Daniel@0: val{k} = cell(1,length(pp{k})); Daniel@0: if isempty(pp{k}) Daniel@0: nseg = 0; Daniel@0: elseif iscell(pp{k}{1}) Daniel@0: nseg = length(pp{k}); Daniel@0: else Daniel@0: nseg = 1; Daniel@0: end Daniel@0: for i = 1:nseg Daniel@0: ppi = pp{k}{i}{1}; Daniel@0: if isempty(po) Daniel@0: poi = (1:size(d{k}{i},2))'; Daniel@0: elseif iscell(po{k}) Daniel@0: if isempty(po{k}) Daniel@0: poi = mean(a.framepos{k}{1})'; Daniel@0: elseif isempty(a.pos) Daniel@0: poi = po{k}{i}'; Daniel@0: elseif ischar(po{k}{1}) Daniel@0: poi = (1:length(po{k}))'; Daniel@0: else Daniel@0: poi = po{k}{i}; Daniel@0: end Daniel@0: else Daniel@0: for j = 1:size(po,3) Daniel@0: poi(:,:,j) = po{k}(:,:,j)'; Daniel@0: end Daniel@0: end Daniel@0: val{k}{i}{1} = zeros(size(ppi)); Daniel@0: if size(poi,3) > 1 && size(poi,1) == 1 Daniel@0: val{k}{i}{1} = ppi; Daniel@0: else Daniel@0: for h = 1:size(ppi,2) Daniel@0: for j = 1:size(ppi,1) Daniel@0: if ppi(j,h) Daniel@0: val{k}{i}{1}(j,h) = poi(ppi(j,h),1); Daniel@0: else Daniel@0: val{k}{i}{1}(j,h) = 0; Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: case 'TrackVal' Daniel@0: if isempty(a.track) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.track.val; Daniel@0: end Daniel@0: case 'TrackPrecisePos' Daniel@0: if isempty(a.track) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.track.precisepos; Daniel@0: end Daniel@0: case 'TrackPreciseVal' Daniel@0: if isempty(a.track) Daniel@0: val = []; Daniel@0: else Daniel@0: val = a.track.preciseval; Daniel@0: end Daniel@0: case 'Title' Daniel@0: val = a.title; Daniel@0: case 'Abs' Daniel@0: val = a.abs; Daniel@0: case 'Ord' Daniel@0: val = a.ord; Daniel@0: case 'InterChunk' Daniel@0: val = a.interchunk; Daniel@0: case 'TmpIdx' Daniel@0: val = a.tmpidx; Daniel@0: case 'AcrossChunks' Daniel@0: val = a.acrosschunks; Daniel@0: case 'Interpolable' Daniel@0: val = a.interpolable; Daniel@0: case 'TmpFile' Daniel@0: val = a.tmpfile; Daniel@0: case 'Index' Daniel@0: val = a.index; Daniel@0: otherwise Daniel@0: error([propName,' is not a valid MIRdata property']) Daniel@0: end