annotate trunk/matlab/bmm/carfac/MultiScaleSmooth.m @ 574:101289a936be

Update copyright lines on Google files.
author tom@acousticscale.org
date Mon, 25 Jun 2012 11:14:08 +0000
parents 3e2e0ab4f708
children
rev   line source
tom@574 1 % Copyright 2012 Google Inc. All Rights Reserved.
tom@516 2 % Author: Richard F. Lyon
tom@516 3 %
tom@516 4 % This Matlab file is part of an implementation of Lyon's cochlear model:
tom@516 5 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
tom@516 6 % to supplement Lyon's upcoming book "Human and Machine Hearing"
tom@516 7 %
tom@516 8 % Licensed under the Apache License, Version 2.0 (the "License");
tom@516 9 % you may not use this file except in compliance with the License.
tom@516 10 % You may obtain a copy of the License at
tom@516 11 %
tom@516 12 % http://www.apache.org/licenses/LICENSE-2.0
tom@516 13 %
tom@516 14 % Unless required by applicable law or agreed to in writing, software
tom@516 15 % distributed under the License is distributed on an "AS IS" BASIS,
tom@516 16 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
tom@516 17 % See the License for the specific language governing permissions and
tom@516 18 % limitations under the License.
tom@516 19
tom@516 20 function MultiScaleSmooth(waves, n_scales)
tom@516 21 % function MultiScaleSmooth(waves, n_scales)
tom@516 22 %
tom@516 23 % Let's take columns as waveforms, and smooth them to different scales;
tom@516 24 % these inputs can be carfac NAPs, for example, and the peaks of the
tom@516 25 % smoothed versions can be used as trigger events, even tracking back
tom@516 26 % to less-smoothed versions.
tom@516 27 % And we'll deciamte 2:1 at every other smoothing.
tom@516 28 %
tom@516 29 % Until we decide what we want, we'll just plot things, one plot per scale.
tom@516 30
tom@516 31 fig_offset1 = 10;
tom@516 32
tom@516 33 if nargin < 2
tom@516 34 n_scales = 20;
tom@516 35 end
tom@516 36
tom@516 37 smoothed = waves;
tom@516 38
tom@516 39 for scale_no = 1:n_scales
tom@516 40
tom@516 41 if mod(scale_no, 2) == 1
tom@516 42 newsmoothed = filter([1, 1]/2, 1, smoothed);
tom@516 43 diffsmoothed = max(0, smoothed - newsmoothed);
tom@516 44 smoothed = newsmoothed;
tom@516 45 else
tom@516 46 newsmoothed = filter([1, 2, 1]/4, 1, smoothed);
tom@516 47 diffsmoothed = max(0, smoothed - newsmoothed);
tom@516 48 smoothed = newsmoothed(1:2:end, :);
tom@516 49 end
tom@516 50
tom@516 51 figure(scale_no + fig_offset1)
dicklyon@523 52 imagesc(squeeze(smoothed(:,:,1))')
tom@516 53
tom@516 54 drawnow
tom@516 55 pause(1)
tom@516 56
tom@516 57 end
tom@516 58