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