Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirdata/get.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirdata/get.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,226 @@ +function val = get(a, propName) +% GET Get properties from the MIRdata object +% and return the value + +switch propName + case 'Pos' + val = a.pos; + case 'Data' + val = a.data; + case 'Unit' + val = a.unit; + case 'FramePos' + val = a.framepos; + case 'Framed' + val = a.framed; + case 'Sampling' + val = a.sr; + case 'NBits' + val = a.nbits; + case 'Name' + val = a.name; + case 'Name2' + val = a.name2; + case 'Label' + val = a.label; + case 'Channels' + val = a.channels; + case 'Clusters' + val = a.clusters; + case 'MultiData' + val = a.multidata; + case 'PeakPos' + val = a.peak.pos; + case {'PeakPosUnit','AttackPosUnit','ReleasePosUnit'} + switch propName + case 'PeakPosUnit' + pp = a.peak.pos; + case 'AttackPosUnit' + pp = a.attack.pos; + case 'ReleasePosUnit' + pp = a.release.pos; + end + po = a.pos; + d = a.data; + val = cell(1,length(pp)); + if isempty(d) + return + end + for k = 1:length(pp) + val{k} = cell(1,length(pp{k})); + if isempty(pp{k}) + nseg = 0; + elseif iscell(pp{k}{1}) + nseg = length(pp{k}); + else + nseg = 1; + end + for i = 1:nseg + ppi = pp{k}{i}; + if isempty(po) + poi = (1:size(d{k}{i},2))'; + elseif iscell(po{k}) + if isempty(po{k}) + poi = mean(a.framepos{k}{1})'; + elseif isempty(a.pos) + poi = po{k}{i}'; + elseif ischar(po{k}{1}) + poi = (1:length(po{k}))'; + else + poi = po{k}{i}; + end + else + for j = 1:size(po,3) + poi(:,:,j) = po{k}(:,:,j)'; + end + end + val{k}{i} = cell(size(ppi)); + for h = 1:size(ppi,3) + for j = 1:size(ppi,2) + if size(poi,3) > 1 && size(poi,1) == 1 + val{k}{i}{1,j,h} = ppi{1,j,h}; + else + val{k}{i}{1,j,h} = poi(ppi{1,j,h},1); + end + end + end + end + end + case 'PeakPrecisePos' + val = a.peak.precisepos; + case 'PeakVal' + val = a.peak.val; + case 'PeakPreciseVal' + val = a.peak.preciseval; + case 'PeakMaxVal' + pv = a.peak.val; + val = cell(1,length(pv)); + for h = 1:length(pv) + val{h} = cell(1,length(pv{h})); + for i = 1:length(pv{h}) + pvi = pv{h}{i}; + %if iscell(pvi) + % pvi = pvi{1}; % Segmented data not taken into consideration yet. + %end + val{h}{i} = zeros(1,length(pvi)); + for j = 1:length(pvi) + if isempty(pvi{j}) + val{h}{i}(1,j) = NaN; + else + val{h}{i}(1,j) = max(pvi{j}); + end + end + end + end + case 'PeakMode' + val = a.peak.mode; + case 'AttackPos' + if isempty(a.attack) + val = []; + else + val = a.attack.pos; + end + case 'ReleasePos' + if isempty(a.release) + val = []; + else + val = a.release.pos; + end + case 'TrackPos' + if isempty(a.track) + val = []; + else + val = a.track.pos; + end + case 'TrackPosUnit' + if isempty(a.track) + val = []; + else + pp = a.track.pos; + po = a.pos; + d = a.data; + val = cell(1,length(pp)); + for k = 1:length(pp) + val{k} = cell(1,length(pp{k})); + if isempty(pp{k}) + nseg = 0; + elseif iscell(pp{k}{1}) + nseg = length(pp{k}); + else + nseg = 1; + end + for i = 1:nseg + ppi = pp{k}{i}{1}; + if isempty(po) + poi = (1:size(d{k}{i},2))'; + elseif iscell(po{k}) + if isempty(po{k}) + poi = mean(a.framepos{k}{1})'; + elseif isempty(a.pos) + poi = po{k}{i}'; + elseif ischar(po{k}{1}) + poi = (1:length(po{k}))'; + else + poi = po{k}{i}; + end + else + for j = 1:size(po,3) + poi(:,:,j) = po{k}(:,:,j)'; + end + end + val{k}{i}{1} = zeros(size(ppi)); + if size(poi,3) > 1 && size(poi,1) == 1 + val{k}{i}{1} = ppi; + else + for h = 1:size(ppi,2) + for j = 1:size(ppi,1) + if ppi(j,h) + val{k}{i}{1}(j,h) = poi(ppi(j,h),1); + else + val{k}{i}{1}(j,h) = 0; + end + end + end + end + end + end + end + case 'TrackVal' + if isempty(a.track) + val = []; + else + val = a.track.val; + end + case 'TrackPrecisePos' + if isempty(a.track) + val = []; + else + val = a.track.precisepos; + end + case 'TrackPreciseVal' + if isempty(a.track) + val = []; + else + val = a.track.preciseval; + end + case 'Title' + val = a.title; + case 'Abs' + val = a.abs; + case 'Ord' + val = a.ord; + case 'InterChunk' + val = a.interchunk; + case 'TmpIdx' + val = a.tmpidx; + case 'AcrossChunks' + val = a.acrosschunks; + case 'Interpolable' + val = a.interpolable; + case 'TmpFile' + val = a.tmpfile; + case 'Index' + val = a.index; + otherwise + error([propName,' is not a valid MIRdata property']) +end \ No newline at end of file