annotate trunk/matlab/bmm/carfac/SAI_BlendFrameIntoComposite.m @ 619:2e456754fe20

Better functionization of SAI, and new way to make picture with lag marginal and smoothed history of lag marginal.
author dicklyon@google.com
date Mon, 13 May 2013 21:15:56 +0000
parents 2b2ef398b557
children d0ff15c36828
rev   line source
dicklyon@615 1 % Copyright 2013, Google, Inc.
dicklyon@615 2 % Author: Richard F. Lyon
dicklyon@615 3 %
dicklyon@615 4 % This Matlab file is part of an implementation of Lyon's cochlear model:
dicklyon@615 5 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
dicklyon@615 6 % to supplement Lyon's upcoming book "Human and Machine Hearing"
dicklyon@615 7 %
dicklyon@615 8 % Licensed under the Apache License, Version 2.0 (the "License");
dicklyon@615 9 % you may not use this file except in compliance with the License.
dicklyon@615 10 % You may obtain a copy of the License at
dicklyon@615 11 %
dicklyon@615 12 % http://www.apache.org/licenses/LICENSE-2.0
dicklyon@615 13 %
dicklyon@615 14 % Unless required by applicable law or agreed to in writing, software
dicklyon@615 15 % distributed under the License is distributed on an "AS IS" BASIS,
dicklyon@615 16 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dicklyon@615 17 % See the License for the specific language governing permissions and
dicklyon@615 18 % limitations under the License.
dicklyon@615 19
dicklyon@619 20 function composite_frame = SAI_BlendFrameIntoComposite( ...
dicklyon@615 21 layer_struct, composite_frame)
dicklyon@615 22
dicklyon@619 23 new_frame = layer_struct.frame;
dicklyon@615 24 alpha = layer_struct.alpha;
dicklyon@615 25 lag_curve = layer_struct.lag_curve;
dicklyon@615 26 target_columns = layer_struct.target_indices;
dicklyon@615 27
dicklyon@615 28 frame_width = size(new_frame, 2);
dicklyon@615 29
dicklyon@615 30 % Lags are measured from 0 at the right.
dicklyon@615 31 stretched_frame = interp1(new_frame', frame_width - lag_curve)';
dicklyon@615 32 alpha = repmat(alpha, size(new_frame, 1), 1);
dicklyon@615 33 composite_frame(:, target_columns) = ...
dicklyon@615 34 (1 - alpha) .* composite_frame(:, target_columns) + ...
dicklyon@615 35 alpha .* stretched_frame;