annotate toolboxes/MIRtoolbox1.3.2/MIRToolbox/@mirdata/get.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 function val = get(a, propName)
Daniel@0 2 % GET Get properties from the MIRdata object
Daniel@0 3 % and return the value
Daniel@0 4
Daniel@0 5 switch propName
Daniel@0 6 case 'Pos'
Daniel@0 7 val = a.pos;
Daniel@0 8 case 'Data'
Daniel@0 9 val = a.data;
Daniel@0 10 case 'Unit'
Daniel@0 11 val = a.unit;
Daniel@0 12 case 'FramePos'
Daniel@0 13 val = a.framepos;
Daniel@0 14 case 'Framed'
Daniel@0 15 val = a.framed;
Daniel@0 16 case 'Sampling'
Daniel@0 17 val = a.sr;
Daniel@0 18 case 'NBits'
Daniel@0 19 val = a.nbits;
Daniel@0 20 case 'Name'
Daniel@0 21 val = a.name;
Daniel@0 22 case 'Name2'
Daniel@0 23 val = a.name2;
Daniel@0 24 case 'Label'
Daniel@0 25 val = a.label;
Daniel@0 26 case 'Channels'
Daniel@0 27 val = a.channels;
Daniel@0 28 case 'Clusters'
Daniel@0 29 val = a.clusters;
Daniel@0 30 case 'MultiData'
Daniel@0 31 val = a.multidata;
Daniel@0 32 case 'PeakPos'
Daniel@0 33 val = a.peak.pos;
Daniel@0 34 case {'PeakPosUnit','AttackPosUnit','ReleasePosUnit'}
Daniel@0 35 switch propName
Daniel@0 36 case 'PeakPosUnit'
Daniel@0 37 pp = a.peak.pos;
Daniel@0 38 case 'AttackPosUnit'
Daniel@0 39 pp = a.attack.pos;
Daniel@0 40 case 'ReleasePosUnit'
Daniel@0 41 pp = a.release.pos;
Daniel@0 42 end
Daniel@0 43 po = a.pos;
Daniel@0 44 d = a.data;
Daniel@0 45 val = cell(1,length(pp));
Daniel@0 46 if isempty(d)
Daniel@0 47 return
Daniel@0 48 end
Daniel@0 49 for k = 1:length(pp)
Daniel@0 50 val{k} = cell(1,length(pp{k}));
Daniel@0 51 if isempty(pp{k})
Daniel@0 52 nseg = 0;
Daniel@0 53 elseif iscell(pp{k}{1})
Daniel@0 54 nseg = length(pp{k});
Daniel@0 55 else
Daniel@0 56 nseg = 1;
Daniel@0 57 end
Daniel@0 58 for i = 1:nseg
Daniel@0 59 ppi = pp{k}{i};
Daniel@0 60 if isempty(po)
Daniel@0 61 poi = (1:size(d{k}{i},2))';
Daniel@0 62 elseif iscell(po{k})
Daniel@0 63 if isempty(po{k})
Daniel@0 64 poi = mean(a.framepos{k}{1})';
Daniel@0 65 elseif isempty(a.pos)
Daniel@0 66 poi = po{k}{i}';
Daniel@0 67 elseif ischar(po{k}{1})
Daniel@0 68 poi = (1:length(po{k}))';
Daniel@0 69 else
Daniel@0 70 poi = po{k}{i};
Daniel@0 71 end
Daniel@0 72 else
Daniel@0 73 for j = 1:size(po,3)
Daniel@0 74 poi(:,:,j) = po{k}(:,:,j)';
Daniel@0 75 end
Daniel@0 76 end
Daniel@0 77 val{k}{i} = cell(size(ppi));
Daniel@0 78 for h = 1:size(ppi,3)
Daniel@0 79 for j = 1:size(ppi,2)
Daniel@0 80 if size(poi,3) > 1 && size(poi,1) == 1
Daniel@0 81 val{k}{i}{1,j,h} = ppi{1,j,h};
Daniel@0 82 else
Daniel@0 83 val{k}{i}{1,j,h} = poi(ppi{1,j,h},1);
Daniel@0 84 end
Daniel@0 85 end
Daniel@0 86 end
Daniel@0 87 end
Daniel@0 88 end
Daniel@0 89 case 'PeakPrecisePos'
Daniel@0 90 val = a.peak.precisepos;
Daniel@0 91 case 'PeakVal'
Daniel@0 92 val = a.peak.val;
Daniel@0 93 case 'PeakPreciseVal'
Daniel@0 94 val = a.peak.preciseval;
Daniel@0 95 case 'PeakMaxVal'
Daniel@0 96 pv = a.peak.val;
Daniel@0 97 val = cell(1,length(pv));
Daniel@0 98 for h = 1:length(pv)
Daniel@0 99 val{h} = cell(1,length(pv{h}));
Daniel@0 100 for i = 1:length(pv{h})
Daniel@0 101 pvi = pv{h}{i};
Daniel@0 102 %if iscell(pvi)
Daniel@0 103 % pvi = pvi{1}; % Segmented data not taken into consideration yet.
Daniel@0 104 %end
Daniel@0 105 val{h}{i} = zeros(1,length(pvi));
Daniel@0 106 for j = 1:length(pvi)
Daniel@0 107 if isempty(pvi{j})
Daniel@0 108 val{h}{i}(1,j) = NaN;
Daniel@0 109 else
Daniel@0 110 val{h}{i}(1,j) = max(pvi{j});
Daniel@0 111 end
Daniel@0 112 end
Daniel@0 113 end
Daniel@0 114 end
Daniel@0 115 case 'PeakMode'
Daniel@0 116 val = a.peak.mode;
Daniel@0 117 case 'AttackPos'
Daniel@0 118 if isempty(a.attack)
Daniel@0 119 val = [];
Daniel@0 120 else
Daniel@0 121 val = a.attack.pos;
Daniel@0 122 end
Daniel@0 123 case 'ReleasePos'
Daniel@0 124 if isempty(a.release)
Daniel@0 125 val = [];
Daniel@0 126 else
Daniel@0 127 val = a.release.pos;
Daniel@0 128 end
Daniel@0 129 case 'TrackPos'
Daniel@0 130 if isempty(a.track)
Daniel@0 131 val = [];
Daniel@0 132 else
Daniel@0 133 val = a.track.pos;
Daniel@0 134 end
Daniel@0 135 case 'TrackPosUnit'
Daniel@0 136 if isempty(a.track)
Daniel@0 137 val = [];
Daniel@0 138 else
Daniel@0 139 pp = a.track.pos;
Daniel@0 140 po = a.pos;
Daniel@0 141 d = a.data;
Daniel@0 142 val = cell(1,length(pp));
Daniel@0 143 for k = 1:length(pp)
Daniel@0 144 val{k} = cell(1,length(pp{k}));
Daniel@0 145 if isempty(pp{k})
Daniel@0 146 nseg = 0;
Daniel@0 147 elseif iscell(pp{k}{1})
Daniel@0 148 nseg = length(pp{k});
Daniel@0 149 else
Daniel@0 150 nseg = 1;
Daniel@0 151 end
Daniel@0 152 for i = 1:nseg
Daniel@0 153 ppi = pp{k}{i}{1};
Daniel@0 154 if isempty(po)
Daniel@0 155 poi = (1:size(d{k}{i},2))';
Daniel@0 156 elseif iscell(po{k})
Daniel@0 157 if isempty(po{k})
Daniel@0 158 poi = mean(a.framepos{k}{1})';
Daniel@0 159 elseif isempty(a.pos)
Daniel@0 160 poi = po{k}{i}';
Daniel@0 161 elseif ischar(po{k}{1})
Daniel@0 162 poi = (1:length(po{k}))';
Daniel@0 163 else
Daniel@0 164 poi = po{k}{i};
Daniel@0 165 end
Daniel@0 166 else
Daniel@0 167 for j = 1:size(po,3)
Daniel@0 168 poi(:,:,j) = po{k}(:,:,j)';
Daniel@0 169 end
Daniel@0 170 end
Daniel@0 171 val{k}{i}{1} = zeros(size(ppi));
Daniel@0 172 if size(poi,3) > 1 && size(poi,1) == 1
Daniel@0 173 val{k}{i}{1} = ppi;
Daniel@0 174 else
Daniel@0 175 for h = 1:size(ppi,2)
Daniel@0 176 for j = 1:size(ppi,1)
Daniel@0 177 if ppi(j,h)
Daniel@0 178 val{k}{i}{1}(j,h) = poi(ppi(j,h),1);
Daniel@0 179 else
Daniel@0 180 val{k}{i}{1}(j,h) = 0;
Daniel@0 181 end
Daniel@0 182 end
Daniel@0 183 end
Daniel@0 184 end
Daniel@0 185 end
Daniel@0 186 end
Daniel@0 187 end
Daniel@0 188 case 'TrackVal'
Daniel@0 189 if isempty(a.track)
Daniel@0 190 val = [];
Daniel@0 191 else
Daniel@0 192 val = a.track.val;
Daniel@0 193 end
Daniel@0 194 case 'TrackPrecisePos'
Daniel@0 195 if isempty(a.track)
Daniel@0 196 val = [];
Daniel@0 197 else
Daniel@0 198 val = a.track.precisepos;
Daniel@0 199 end
Daniel@0 200 case 'TrackPreciseVal'
Daniel@0 201 if isempty(a.track)
Daniel@0 202 val = [];
Daniel@0 203 else
Daniel@0 204 val = a.track.preciseval;
Daniel@0 205 end
Daniel@0 206 case 'Title'
Daniel@0 207 val = a.title;
Daniel@0 208 case 'Abs'
Daniel@0 209 val = a.abs;
Daniel@0 210 case 'Ord'
Daniel@0 211 val = a.ord;
Daniel@0 212 case 'InterChunk'
Daniel@0 213 val = a.interchunk;
Daniel@0 214 case 'TmpIdx'
Daniel@0 215 val = a.tmpidx;
Daniel@0 216 case 'AcrossChunks'
Daniel@0 217 val = a.acrosschunks;
Daniel@0 218 case 'Interpolable'
Daniel@0 219 val = a.interpolable;
Daniel@0 220 case 'TmpFile'
Daniel@0 221 val = a.tmpfile;
Daniel@0 222 case 'Index'
Daniel@0 223 val = a.index;
Daniel@0 224 otherwise
Daniel@0 225 error([propName,' is not a valid MIRdata property'])
Daniel@0 226 end