annotate carfac/ear_output.cc @ 611:0fbaf443ec82

Carfac C++ revision 3, indluding more style improvements. The output structs are now classes again, and have separate storage methods for each output structure along with flags in the Run and RunSegment methods to allow for only storing NAPs if desired.
author alexbrandmeyer
date Fri, 17 May 2013 19:52:45 +0000
parents 01986636257a
children 586b0677aae8
rev   line source
alexbrandmeyer@609 1 //
alexbrandmeyer@609 2 // ear_output.cc
alexbrandmeyer@609 3 // CARFAC Open Source C++ Library
alexbrandmeyer@609 4 //
alexbrandmeyer@609 5 // Created by Alex Brandmeyer on 5/10/13.
alexbrandmeyer@609 6 //
alexbrandmeyer@609 7 // This C++ file is part of an implementation of Lyon's cochlear model:
alexbrandmeyer@609 8 // "Cascade of Asymmetric Resonators with Fast-Acting Compression"
alexbrandmeyer@609 9 // to supplement Lyon's upcoming book "Human and Machine Hearing"
alexbrandmeyer@609 10 //
alexbrandmeyer@609 11 // Licensed under the Apache License, Version 2.0 (the "License");
alexbrandmeyer@609 12 // you may not use this file except in compliance with the License.
alexbrandmeyer@609 13 // You may obtain a copy of the License at
alexbrandmeyer@609 14 //
alexbrandmeyer@609 15 // http://www.apache.org/licenses/LICENSE-2.0
alexbrandmeyer@609 16 //
alexbrandmeyer@609 17 // Unless required by applicable law or agreed to in writing, software
alexbrandmeyer@609 18 // distributed under the License is distributed on an "AS IS" BASIS,
alexbrandmeyer@609 19 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
alexbrandmeyer@609 20 // See the License for the specific language governing permissions and
alexbrandmeyer@609 21 // limitations under the License.
alexbrandmeyer@609 22
alexbrandmeyer@609 23 #include "ear_output.h"
alexbrandmeyer@609 24
alexbrandmeyer@611 25 void EarOutput::InitOutput(int n_ch, int32_t n_tp) {
alexbrandmeyer@609 26 n_ch_ = n_ch;
alexbrandmeyer@609 27 n_timepoints_ = n_tp;
alexbrandmeyer@610 28 nap_.resize(n_ch_, n_timepoints_);
alexbrandmeyer@610 29 bm_.resize(n_ch_, n_timepoints_);
alexbrandmeyer@610 30 ohc_.resize(n_ch_, n_timepoints_);
alexbrandmeyer@610 31 agc_.resize(n_ch_, n_timepoints_);
alexbrandmeyer@609 32 }
alexbrandmeyer@609 33
alexbrandmeyer@611 34 void EarOutput::MergeOutput(EarOutput ear_output, int32_t start, int32_t length) {
alexbrandmeyer@609 35 nap_.block(0, start, n_ch_, length) = ear_output.nap_.block(0, 0, n_ch_,
alexbrandmeyer@609 36 length);
alexbrandmeyer@609 37 bm_.block(0, start, n_ch_, length) = ear_output.bm_.block(0, 0, n_ch_,
alexbrandmeyer@609 38 length);
alexbrandmeyer@609 39 ohc_.block(0, start, n_ch_, length) = ear_output.ohc_.block(0, 0, n_ch_,
alexbrandmeyer@609 40 length);
alexbrandmeyer@609 41 agc_.block(0, start, n_ch_, length) = ear_output.agc_.block(0, 0, n_ch_,
alexbrandmeyer@609 42 length);
alexbrandmeyer@611 43 }
alexbrandmeyer@611 44
alexbrandmeyer@611 45 void EarOutput::StoreNAPOutput(int32_t timepoint, int n_ch, FloatArray nap) {
alexbrandmeyer@611 46 nap_.block(0, timepoint, n_ch_, 1) = nap;
alexbrandmeyer@611 47 }
alexbrandmeyer@611 48
alexbrandmeyer@611 49 void EarOutput::StoreBMOutput(int32_t timepoint, int n_ch, FloatArray bm) {
alexbrandmeyer@611 50 bm_.block(0, timepoint, n_ch_, 1) = bm;
alexbrandmeyer@611 51 }
alexbrandmeyer@611 52
alexbrandmeyer@611 53 void EarOutput::StoreOHCOutput(int32_t timepoint, int n_ch, FloatArray ohc) {
alexbrandmeyer@611 54 ohc_.block(0, timepoint, n_ch_, 1) = ohc;
alexbrandmeyer@611 55 }
alexbrandmeyer@611 56
alexbrandmeyer@611 57 void EarOutput::StoreAGCOutput(int32_t timepoint, int n_ch, FloatArray agc) {
alexbrandmeyer@611 58 agc_.block(0, timepoint, n_ch_, 1) = agc;
alexbrandmeyer@609 59 }