annotate utilities/UTIL_showMAP.m @ 35:25d53244d5c8

latest parameters
author Ray Meddis <rmeddis@essex.ac.uk>
date Thu, 15 Sep 2011 13:50:20 +0100
parents 82fb37eb430e
children c2204b18f4a2
rev   line source
rmeddis@26 1 function UTIL_showMAP (showMapOptions, paramChanges)
rmeddis@24 2 % UTIL_showMAP produces summaries of the output from MAP's mmost recent run
rmeddis@24 3 % All MAP outputs are stored in global variables and UTIL_showMAP
rmeddis@24 4 % simply assumes that they are in place.
rmeddis@24 5 %
rmeddis@25 6 % showMapOptions
rmeddis@32 7 % showMapOptions.printModelParameters=1; % print model parameters
rmeddis@25 8 % showMapOptions.showModelOutput=1; % plot all stages output
rmeddis@25 9 % showMapOptions.printFiringRates=1; % mean activity at all stages
rmeddis@25 10 % showMapOptions.showACF=1; % SACF (probabilities only)
rmeddis@25 11 % showMapOptions.showEfferent=1; % plot of efferent activity
rmeddis@25 12 % showMapOptions.surfProbability=0; % HSR (probability) surf plot
rmeddis@25 13 % showMapOptions.fileName=[]; % parameter filename for plot title
rmeddis@23 14
rmeddis@35 15 % dbstop if warning
rmeddis@23 16
rmeddis@32 17 global dt ANdt savedBFlist saveAN_spikesOrProbability saveMAPparamsName...
rmeddis@32 18 savedInputSignal OMEextEarPressure TMoutput OMEoutput ARattenuation ...
rmeddis@23 19 DRNLoutput IHC_cilia_output IHCrestingCiliaCond IHCrestingV...
rmeddis@32 20 IHCoutput ANprobRateOutput ANoutput savePavailable ANtauCas ...
rmeddis@32 21 CNtauGk CNoutput ICoutput ICmembraneOutput ICfiberTypeRates ...
rmeddis@32 22 MOCattenuation
rmeddis@23 23 global OMEParams DRNLParams IHC_cilia_RPParams IHCpreSynapseParams
rmeddis@23 24 global AN_IHCsynapseParams MacGregorParams MacGregorMultiParams
rmeddis@32 25 global ICrate
rmeddis@23 26
rmeddis@23 27
rmeddis@23 28 restorePath=path;
rmeddis@23 29 addpath ( ['..' filesep 'utilities'], ['..' filesep 'parameterStore'])
rmeddis@23 30
rmeddis@23 31 if nargin<1
rmeddis@25 32 showMapOptions=[];
rmeddis@23 33 end
rmeddis@25 34 % defaults (plot staged outputs and print rates only) if options omitted
rmeddis@25 35 if ~isfield(showMapOptions,'printModelParameters')
rmeddis@32 36 showMapOptions.printModelParameters=0; end
rmeddis@25 37 if ~isfield(showMapOptions,'showModelOutput'),showMapOptions.showModelOutput=1;end
rmeddis@25 38 if ~isfield(showMapOptions,'printFiringRates'),showMapOptions.printFiringRates=1;end
rmeddis@25 39 if ~isfield(showMapOptions,'showACF'),showMapOptions.showACF=0;end
rmeddis@25 40 if ~isfield(showMapOptions,'showEfferent'),showMapOptions.showEfferent=0;end
rmeddis@25 41 if ~isfield(showMapOptions,'surfProbability'),showMapOptions.surfProbability=0;end
rmeddis@25 42 if ~isfield(showMapOptions,'fileName'),showMapOptions.fileName=[];end
rmeddis@25 43 if ~isfield(showMapOptions,'surfSpikes'),showMapOptions.surfSpikes=0;end
rmeddis@32 44 if ~isfield(showMapOptions,'ICrates'),showMapOptions.ICrates=0;end
rmeddis@23 45
rmeddis@26 46 %% send all model parameters to command window
rmeddis@25 47 if showMapOptions.printModelParameters
rmeddis@23 48 % Read parameters from MAPparams<***> file in 'parameterStore' folder
rmeddis@23 49 % and print out all parameters
rmeddis@26 50 if nargin>1
rmeddis@26 51 cmd=['MAPparams' saveMAPparamsName '(-1, 1/dt, 1, paramChanges);'];
rmeddis@26 52 eval(cmd);
rmeddis@26 53 else
rmeddis@26 54 cmd=['MAPparams' saveMAPparamsName '(-1, 1/dt, 1);'];
rmeddis@26 55 eval(cmd);
rmeddis@26 56 disp(' no parameter changes found')
rmeddis@26 57 end
rmeddis@23 58 end
rmeddis@23 59
rmeddis@26 60 %% summarise firing rates in command window
rmeddis@25 61 if showMapOptions.printFiringRates
rmeddis@23 62 %% print summary firing rates
rmeddis@35 63 fprintf('\n')
rmeddis@23 64 disp('summary')
rmeddis@23 65 disp(['AR: ' num2str(min(ARattenuation))])
rmeddis@23 66 disp(['MOC: ' num2str(min(min(MOCattenuation)))])
rmeddis@32 67 nANfiberTypes=length(ANtauCas);
rmeddis@23 68 if strcmp(saveAN_spikesOrProbability, 'spikes')
rmeddis@23 69 nANfibers=size(ANoutput,1);
rmeddis@23 70 nHSRfibers=nANfibers/nANfiberTypes;
rmeddis@23 71 duration=size(TMoutput,2)*dt;
rmeddis@32 72 disp(['AN(HSR): ' num2str(sum(sum(ANoutput(end-nHSRfibers+1:end,:)))/...
rmeddis@23 73 (nHSRfibers*duration))])
rmeddis@23 74
rmeddis@23 75 nCNneurons=size(CNoutput,1);
rmeddis@23 76 nHSRCNneuronss=nCNneurons/nANfiberTypes;
rmeddis@32 77 disp(['CN(HSR): ' num2str(sum(sum(CNoutput(end-nHSRCNneuronss+1:end,:)))...
rmeddis@23 78 /(nHSRCNneuronss*duration))])
rmeddis@32 79 nICneurons=size(ICoutput,1);
rmeddis@32 80 nHSRICneurons= round(nICneurons/nANfiberTypes);
rmeddis@35 81 ICrate=sum(sum(ICoutput(end-nHSRICneurons+1:end,:)))/duration/nHSRICneurons;
rmeddis@32 82 disp(['IC(HSR): ' num2str(ICrate)])
rmeddis@23 83 % disp(['IC by type: ' num2str(mean(ICfiberTypeRates,2)')])
rmeddis@23 84 else
rmeddis@32 85 HSRprobOutput= ANprobRateOutput(end-length(savedBFlist)+1:end,:);
rmeddis@27 86 disp(['AN(HSR): ' num2str(mean(mean(HSRprobOutput)))])
rmeddis@27 87 PSTH= UTIL_PSTHmakerb(HSRprobOutput, dt, 0.001);
rmeddis@27 88 disp(['max max AN: ' num2str(max(max(PSTH)))])
rmeddis@23 89 end
rmeddis@23 90 end
rmeddis@23 91
rmeddis@23 92
rmeddis@26 93 %% figure (99): display output from all model stages
rmeddis@25 94 if showMapOptions.showModelOutput
rmeddis@23 95 plotInstructions.figureNo=99;
rmeddis@35 96
rmeddis@35 97 % ignore zero elements in signal
rmeddis@35 98 signalRMS=mean(savedInputSignal(find(savedInputSignal)).^2)^0.5;
rmeddis@23 99 signalRMSdb=20*log10(signalRMS/20e-6);
rmeddis@23 100
rmeddis@23 101 % plot signal (1)
rmeddis@23 102 plotInstructions.displaydt=dt;
rmeddis@23 103 plotInstructions.numPlots=6;
rmeddis@23 104 plotInstructions.subPlotNo=1;
rmeddis@23 105 plotInstructions.title=...
rmeddis@35 106 ['stimulus (Pa). ' num2str(signalRMSdb, '%4.0f') ' dB SPL'];
rmeddis@23 107 r=size(savedInputSignal,1);
rmeddis@23 108 if r==1, savedInputSignal=savedInputSignal'; end
rmeddis@23 109 UTIL_plotMatrix(savedInputSignal', plotInstructions);
rmeddis@23 110
rmeddis@23 111 % stapes (2)
rmeddis@23 112 plotInstructions.subPlotNo=2;
rmeddis@35 113 plotInstructions.title= ['stapes displacement (m)'];
rmeddis@23 114 UTIL_plotMatrix(OMEoutput, plotInstructions);
rmeddis@23 115
rmeddis@23 116 % DRNL (3)
rmeddis@23 117 plotInstructions.subPlotNo=3;
rmeddis@23 118 plotInstructions.yValues= savedBFlist;
rmeddis@35 119 [r c]=size(DRNLoutput);
rmeddis@35 120 if r>1
rmeddis@35 121 plotInstructions.title= ['BM displacement'];
rmeddis@35 122 UTIL_plotMatrix(abs(DRNLoutput), plotInstructions);
rmeddis@35 123 else
rmeddis@35 124 plotInstructions.title= ['BM displacement. BF=' ...
rmeddis@35 125 num2str(savedBFlist) ' Hz'];
rmeddis@23 126 UTIL_plotMatrix(DRNLoutput, plotInstructions);
rmeddis@35 127 end
rmeddis@23 128
rmeddis@23 129 switch saveAN_spikesOrProbability
rmeddis@23 130 case 'spikes'
rmeddis@23 131 % AN (4)
rmeddis@23 132 plotInstructions.displaydt=ANdt;
rmeddis@23 133 plotInstructions.title='AN';
rmeddis@23 134 plotInstructions.subPlotNo=4;
rmeddis@23 135 plotInstructions.yLabel='BF';
rmeddis@23 136 plotInstructions.yValues= savedBFlist;
rmeddis@23 137 plotInstructions.rasterDotSize=1;
rmeddis@32 138 if length(ANtauCas)==2
rmeddis@23 139 plotInstructions.plotDivider=1;
rmeddis@23 140 else
rmeddis@23 141 plotInstructions.plotDivider=0;
rmeddis@23 142 end
rmeddis@23 143 if sum(sum(ANoutput))<100
rmeddis@23 144 plotInstructions.rasterDotSize=3;
rmeddis@23 145 end
rmeddis@23 146 UTIL_plotMatrix(ANoutput, plotInstructions);
rmeddis@23 147
rmeddis@23 148 % CN (5)
rmeddis@23 149 plotInstructions.displaydt=ANdt;
rmeddis@23 150 plotInstructions.subPlotNo=5;
rmeddis@23 151 plotInstructions.title='CN spikes';
rmeddis@23 152 if sum(sum(CNoutput))<100
rmeddis@23 153 plotInstructions.rasterDotSize=3;
rmeddis@23 154 end
rmeddis@23 155 UTIL_plotMatrix(CNoutput, plotInstructions);
rmeddis@23 156
rmeddis@23 157 % IC (6)
rmeddis@23 158 plotInstructions.displaydt=ANdt;
rmeddis@23 159 plotInstructions.subPlotNo=6;
rmeddis@35 160 plotInstructions.title='Brainstem 2nd level';
rmeddis@32 161 if size(ICoutput,1)>1
rmeddis@23 162 if sum(sum(ICoutput))<100
rmeddis@23 163 plotInstructions.rasterDotSize=3;
rmeddis@23 164 end
rmeddis@23 165 UTIL_plotMatrix(ICoutput, plotInstructions);
rmeddis@23 166 else
rmeddis@23 167 plotInstructions.title='IC (HSR) membrane potential';
rmeddis@23 168 plotInstructions.displaydt=dt;
rmeddis@23 169 plotInstructions.yLabel='V';
rmeddis@23 170 plotInstructions.zValuesRange= [-.1 0];
rmeddis@23 171 UTIL_plotMatrix(ICmembraneOutput, plotInstructions);
rmeddis@23 172 end
rmeddis@23 173
rmeddis@26 174 otherwise % AN rate based on probability of firing
rmeddis@26 175 PSTHbinWidth=0.001;
rmeddis@32 176 PSTH= UTIL_PSTHmakerb(ANprobRateOutput, dt, PSTHbinWidth);
rmeddis@35 177 % PSTH = makeANsmooth(PSTH, 1/PSTHbinWidth);
rmeddis@26 178 plotInstructions.displaydt=PSTHbinWidth;
rmeddis@23 179 plotInstructions.numPlots=2;
rmeddis@23 180 plotInstructions.subPlotNo=2;
rmeddis@23 181 plotInstructions.yLabel='BF';
rmeddis@35 182 plotInstructions.xLabel='time';
rmeddis@35 183 plotInstructions.zValuesRange= [0 300];
rmeddis@23 184 if nANfiberTypes>1,
rmeddis@23 185 plotInstructions.yLabel='LSR HSR';
rmeddis@23 186 plotInstructions.plotDivider=1;
rmeddis@23 187 end
rmeddis@26 188 plotInstructions.title='AN - spike rate';
rmeddis@26 189 UTIL_plotMatrix(PSTH, plotInstructions);
rmeddis@35 190 shading interp
rmeddis@35 191 colorbar('southOutside')
rmeddis@23 192 end
rmeddis@35 193 set(gcf,'name','MAP output')
rmeddis@23 194 end
rmeddis@23 195
rmeddis@32 196 if showMapOptions.surfProbability &&...
rmeddis@32 197 strcmp(saveAN_spikesOrProbability,'probability') && ...
rmeddis@32 198 length(savedBFlist)>2
rmeddis@23 199 %% surface plot of probability
rmeddis@32 200 % select only HSR fibers
rmeddis@32 201 figure(97), clf
rmeddis@32 202 HSRprobOutput= ANprobRateOutput(end-length(savedBFlist)+1:end,:);
rmeddis@32 203 PSTHbinWidth=0.001;
rmeddis@32 204 PSTH=UTIL_PSTHmakerb(HSRprobOutput, ANdt, PSTHbinWidth);
rmeddis@32 205 [nY nX]=size(PSTH);
rmeddis@32 206 time=PSTHbinWidth*(1:nX);
rmeddis@32 207 surf(time, savedBFlist, PSTH)
rmeddis@32 208 shading interp
rmeddis@32 209 set(gca, 'yScale','log')
rmeddis@32 210 xlim([0 max(time)])
rmeddis@32 211 ylim([0 max(savedBFlist)])
rmeddis@32 212 zlim([0 1000])
rmeddis@32 213 xlabel('time (s)')
rmeddis@32 214 ylabel('best frequency (Hz)')
rmeddis@32 215 zlabel('spike rate')
rmeddis@32 216 view([-20 60])
rmeddis@32 217 % view([0 90])
rmeddis@32 218 disp(['max max AN: ' num2str(max(max(PSTH)))])
rmeddis@27 219
rmeddis@32 220 title (['firing probability of HSR fibers only. Level= ' ...
rmeddis@32 221 num2str(signalRMSdb,'% 3.0f') ' dB'])
rmeddis@35 222 colorbar('southOutside')
rmeddis@23 223 end
rmeddis@23 224
rmeddis@35 225 %% surface plot of AN spikes
rmeddis@35 226 if showMapOptions.surfSpikes ...
rmeddis@35 227 && strcmp(saveAN_spikesOrProbability, 'spikes')
rmeddis@25 228 figure(97), clf
rmeddis@25 229 % select only HSR fibers at the bottom of the matrix
rmeddis@25 230 ANoutput= ANoutput(end-length(savedBFlist)+1:end,:);
rmeddis@26 231 PSTHbinWidth=0.005; % 1 ms bins
rmeddis@26 232 PSTH=UTIL_makePSTH(ANoutput, ANdt, PSTHbinWidth);
rmeddis@25 233 [nY nX]=size(PSTH);
rmeddis@25 234 time=PSTHbinWidth*(1:nX);
rmeddis@25 235 surf(time, savedBFlist, PSTH)
rmeddis@25 236 shading interp
rmeddis@25 237 set(gca, 'yScale','log')
rmeddis@25 238 xlim([0 max(time)])
rmeddis@25 239 ylim([0 max(savedBFlist)])
rmeddis@32 240 % zlim([0 1000])
rmeddis@25 241 xlabel('time (s)')
rmeddis@25 242 ylabel('best frequency (Hz)')
rmeddis@25 243 zlabel('spike rate')
rmeddis@25 244 view([-20 60])
rmeddis@25 245 % view([0 90])
rmeddis@25 246 title ([showMapOptions.fileName ': ' num2str(signalRMSdb,'% 3.0f') ' dB'])
rmeddis@35 247 set(97,'name', 'spikes surface plot')
rmeddis@25 248 end
rmeddis@25 249
rmeddis@23 250
rmeddis@26 251 %% figure(98) plot efferent control values as dB
rmeddis@25 252 if showMapOptions.showEfferent
rmeddis@23 253 plotInstructions=[];
rmeddis@23 254 plotInstructions.figureNo=98;
rmeddis@23 255 figure(98), clf
rmeddis@23 256 plotInstructions.displaydt=dt;
rmeddis@35 257 plotInstructions.numPlots=4;
rmeddis@23 258 plotInstructions.subPlotNo=1;
rmeddis@35 259 plotInstructions.zValuesRange= [-1 1];
rmeddis@35 260 plotInstructions.title= ['RMS level='...
rmeddis@35 261 num2str(signalRMSdb, '%4.0f') ' dB SPL'];
rmeddis@35 262 UTIL_plotMatrix(savedInputSignal', plotInstructions);
rmeddis@35 263
rmeddis@35 264
rmeddis@35 265 plotInstructions.subPlotNo=2;
rmeddis@23 266 plotInstructions.zValuesRange=[ -25 0];
rmeddis@35 267 plotInstructions.title= ['AR stapes attenuation (dB); tau='...
rmeddis@35 268 num2str(OMEParams.ARtau, '%4.3f') ' s'];
rmeddis@23 269 UTIL_plotMatrix(20*log10(ARattenuation), plotInstructions);
rmeddis@23 270
rmeddis@35 271 % MOCattenuation
rmeddis@35 272 plotInstructions.numPlots=2;
rmeddis@23 273 plotInstructions.subPlotNo=2;
rmeddis@23 274 plotInstructions.yValues= savedBFlist;
rmeddis@35 275 plotInstructions.yLabel= 'dB';
rmeddis@35 276 if strcmp(saveAN_spikesOrProbability,'spikes')
rmeddis@35 277 rate2atten=DRNLParams.rateToAttenuationFactor;
rmeddis@35 278 plotInstructions.title= ['MOC atten; tau=' ...
rmeddis@35 279 num2str(DRNLParams.MOCtau) '; factor='...
rmeddis@35 280 num2str(rate2atten, '%6.4f')];
rmeddis@35 281 else
rmeddis@35 282 rate2atten=DRNLParams.rateToAttenuationFactorProb;
rmeddis@35 283 plotInstructions.title= ['MOC atten; tauProb=' ...
rmeddis@35 284 num2str(DRNLParams.MOCtauProb) '; factor='...
rmeddis@35 285 num2str(rate2atten, '%6.4f')];
rmeddis@35 286 end
rmeddis@35 287 plotInstructions.zValuesRange=[0 -DRNLParams.minMOCattenuationdB+5];
rmeddis@35 288 UTIL_plotMatrix(-20*log10(MOCattenuation), plotInstructions);
rmeddis@35 289 hold on
rmeddis@35 290 [r c]=size(MOCattenuation);
rmeddis@35 291 if r>2
rmeddis@35 292 colorbar('southOutside')
rmeddis@35 293 end
rmeddis@35 294 set(plotInstructions.figureNo, 'name', 'AR/ MOC')
rmeddis@35 295
rmeddis@35 296 binwidth=0.1;
rmeddis@35 297 [PSTH ]=UTIL_PSTHmaker(20*log10(MOCattenuation), dt, binwidth);
rmeddis@35 298 PSTH=PSTH*length(PSTH)/length(MOCattenuation);
rmeddis@35 299 t=binwidth:binwidth:binwidth*length(PSTH);
rmeddis@35 300 fprintf('\n\n')
rmeddis@35 301 % UTIL_printTabTable([t' PSTH'])
rmeddis@35 302 % fprintf('\n\n')
rmeddis@35 303
rmeddis@23 304 end
rmeddis@23 305
rmeddis@23 306 %% ACF plot if required
rmeddis@25 307 if showMapOptions.showACF
rmeddis@23 308 tic
rmeddis@23 309 method.dt=dt;
rmeddis@23 310 method.segmentNo=1;
rmeddis@23 311 method.nonlinCF=savedBFlist;
rmeddis@23 312
rmeddis@23 313 minPitch= 80; maxPitch= 4000; numPitches=100; % specify lags
rmeddis@23 314 pitches=10.^ linspace(log10(minPitch), log10(maxPitch),numPitches);
rmeddis@23 315 pitches=fliplr(pitches);
rmeddis@23 316 filteredSACFParams.lags=1./pitches; % autocorrelation lags vector
rmeddis@23 317 filteredSACFParams.acfTau= .003; % time constant of running ACF
rmeddis@23 318 filteredSACFParams.lambda= 0.12; % slower filter to smooth ACF
rmeddis@23 319 filteredSACFParams.lambda= 0.01; % slower filter to smooth ACF
rmeddis@23 320
rmeddis@23 321 filteredSACFParams.plotACFs=0; % special plot (see code)
rmeddis@23 322 filteredSACFParams.plotFilteredSACF=0; % 0 plots unfiltered ACFs
rmeddis@23 323 filteredSACFParams.plotMoviePauses=.3; % special plot (see code)
rmeddis@23 324
rmeddis@23 325 filteredSACFParams.usePressnitzer=0; % attenuates ACF at long lags
rmeddis@23 326 filteredSACFParams.lagsProcedure= 'useAllLags';
rmeddis@23 327 % filteredSACFParams.lagsProcedure= 'useBernsteinLagWeights';
rmeddis@23 328 % filteredSACFParams.lagsProcedure= 'omitShortLags';
rmeddis@23 329 filteredSACFParams.criterionForOmittingLags=3;
rmeddis@23 330 filteredSACFParams.plotACFsInterval=200;
rmeddis@23 331
rmeddis@23 332 if filteredSACFParams.plotACFs
rmeddis@23 333 % plot original waveform on ACF plot
rmeddis@23 334 figure(13), clf
rmeddis@23 335 subplot(4,1,1)
rmeddis@23 336 t=dt*(1:length(savedInputSignal));
rmeddis@23 337 plot(t,savedInputSignal)
rmeddis@23 338 xlim([0 t(end)])
rmeddis@23 339 title(['stimulus: ' num2str(signalRMSdb, '%4.0f') ' dB SPL']);
rmeddis@23 340 end
rmeddis@23 341
rmeddis@23 342 % plot original waveform on summary/smoothed ACF plot
rmeddis@23 343 figure(96), clf
rmeddis@23 344 subplot(2,1,1)
rmeddis@23 345 t=dt*(1:length(savedInputSignal));
rmeddis@23 346 plot(t,savedInputSignal)
rmeddis@23 347 xlim([0 t(end)])
rmeddis@23 348 title(['stimulus: ' num2str(signalRMSdb, '%4.0f') ' dB SPL']);
rmeddis@23 349
rmeddis@23 350
rmeddis@23 351 % compute ACF
rmeddis@23 352 switch saveAN_spikesOrProbability
rmeddis@23 353 case 'probability'
rmeddis@23 354 inputToACF=ANprobRateOutput.^0.5;
rmeddis@23 355 otherwise
rmeddis@23 356 inputToACF=ANoutput;
rmeddis@23 357 end
rmeddis@23 358
rmeddis@23 359 disp ('computing ACF...')
rmeddis@23 360 [P, BFlist, sacf, boundaryValue] = ...
rmeddis@23 361 filteredSACF(inputToACF, method, filteredSACFParams);
rmeddis@23 362 disp(' ACF done.')
rmeddis@23 363
rmeddis@23 364 % SACF
rmeddis@23 365 subplot(2,1,2)
rmeddis@23 366 imagesc(P)
rmeddis@23 367 ylabel('periodicities (Hz)')
rmeddis@23 368 xlabel('time (s)')
rmeddis@23 369 title(['running smoothed (root) SACF. ' saveAN_spikesOrProbability ' input'])
rmeddis@23 370 pt=[1 get(gca,'ytick')]; % force top xtick to show
rmeddis@23 371 set(gca,'ytick',pt)
rmeddis@23 372 set(gca,'ytickLabel', round(pitches(pt)))
rmeddis@23 373 tt=get(gca,'xtick');
rmeddis@23 374 set(gca,'xtickLabel', round(100*t(tt))/100)
rmeddis@23 375 end
rmeddis@23 376
rmeddis@23 377 path(restorePath)
rmeddis@32 378
rmeddis@35 379
rmeddis@32 380 %% IC chopper analysis
rmeddis@35 381 % global ICrate
rmeddis@35 382 % if showMapOptions.ICrates
rmeddis@35 383 % [r nEpochs]=size(ICoutput);
rmeddis@35 384 % ICrate=zeros(1,length(CNtauGk));
rmeddis@35 385 % % convert ICoutput to a 4-D matrix (time, CNtau, BF, fiberType)
rmeddis@35 386 % % NB only one IC unit for any combination.
rmeddis@35 387 % y=reshape(ICoutput', ...
rmeddis@35 388 % nEpochs, length(CNtauGk),length(savedBFlist),length(ANtauCas));
rmeddis@35 389 % for i=1:length(CNtauGk)
rmeddis@35 390 % ICrate(i)=sum(sum(sum(y(:,i,:,:))))/duration;
rmeddis@35 391 % fprintf('%10.5f\t%6.0f\n', CNtauGk(i), ICrate(i))
rmeddis@35 392 % end
rmeddis@35 393 % figure(95), plot(CNtauGk,ICrate)
rmeddis@35 394 % title ('ICrate'), xlabel('CNtauGk'), ylabel('ICrate')
rmeddis@35 395 % end
rmeddis@35 396
rmeddis@35 397 function ANsmooth = makeANsmooth(ANresponse, sampleRate, winSize, hopSize)
rmeddis@35 398 if nargin < 3
rmeddis@35 399 winSize = 25; %default 25 ms window
rmeddis@35 400 end
rmeddis@35 401 if nargin < 4
rmeddis@35 402 hopSize = 10; %default 10 ms jump between windows
rmeddis@35 403 end
rmeddis@35 404
rmeddis@35 405 winSizeSamples = round(winSize*sampleRate/1000);
rmeddis@35 406 hopSizeSamples = round(hopSize*sampleRate/1000);
rmeddis@35 407
rmeddis@35 408 % smooth
rmeddis@35 409 hann = hanning(winSizeSamples);
rmeddis@35 410
rmeddis@35 411 ANsmooth = [];%Cannot pre-allocate a size as it is unknown until the enframing
rmeddis@35 412 for chan = 1:size(ANresponse,1)
rmeddis@35 413 f = enframe(ANresponse(chan,:), hann, hopSizeSamples);
rmeddis@35 414 ANsmooth(chan,:) = mean(f,2)'; %#ok<AGROW> see above comment
rmeddis@35 415 end
rmeddis@35 416 % end% ------ OF makeANsmooth