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