dicklyon@615: % Copyright 2013, Google, Inc. dicklyon@615: % Author: Richard F. Lyon dicklyon@615: % dicklyon@615: % This Matlab file is part of an implementation of Lyon's cochlear model: dicklyon@615: % "Cascade of Asymmetric Resonators with Fast-Acting Compression" dicklyon@615: % to supplement Lyon's upcoming book "Human and Machine Hearing" dicklyon@615: % dicklyon@615: % Licensed under the Apache License, Version 2.0 (the "License"); dicklyon@615: % you may not use this file except in compliance with the License. dicklyon@615: % You may obtain a copy of the License at dicklyon@615: % dicklyon@615: % http://www.apache.org/licenses/LICENSE-2.0 dicklyon@615: % dicklyon@615: % Unless required by applicable law or agreed to in writing, software dicklyon@615: % distributed under the License is distributed on an "AS IS" BASIS, dicklyon@615: % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dicklyon@615: % See the License for the specific language governing permissions and dicklyon@615: % limitations under the License. dicklyon@615: dicklyon@619: function composite_frame = SAI_BlendFrameIntoComposite( ... dicklyon@615: layer_struct, composite_frame) dicklyon@615: dicklyon@619: new_frame = layer_struct.frame; dicklyon@615: alpha = layer_struct.alpha; dicklyon@615: lag_curve = layer_struct.lag_curve; dicklyon@615: target_columns = layer_struct.target_indices; dicklyon@615: dicklyon@615: frame_width = size(new_frame, 2); dicklyon@615: dicklyon@615: % Lags are measured from 0 at the right. dicklyon@615: stretched_frame = interp1(new_frame', frame_width - lag_curve)'; dicklyon@615: alpha = repmat(alpha, size(new_frame, 1), 1); dicklyon@615: composite_frame(:, target_columns) = ... dicklyon@615: (1 - alpha) .* composite_frame(:, target_columns) + ... dicklyon@615: alpha .* stretched_frame;