annotate trunk/carfac/carfac_output.h @ 622:16918ffbf975

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 d763637a05c5
children 933cf18d9a59
rev   line source
alexbrandmeyer@620 1 //
alexbrandmeyer@620 2 // carfac_output.h
alexbrandmeyer@620 3 // CARFAC Open Source C++ Library
alexbrandmeyer@620 4 //
alexbrandmeyer@620 5 // Created by Alex Brandmeyer on 5/10/13.
alexbrandmeyer@620 6 //
alexbrandmeyer@620 7 // This C++ file is part of an implementation of Lyon's cochlear model:
alexbrandmeyer@620 8 // "Cascade of Asymmetric Resonators with Fast-Acting Compression"
alexbrandmeyer@620 9 // to supplement Lyon's upcoming book "Human and Machine Hearing"
alexbrandmeyer@620 10 //
alexbrandmeyer@620 11 // Licensed under the Apache License, Version 2.0 (the "License");
alexbrandmeyer@620 12 // you may not use this file except in compliance with the License.
alexbrandmeyer@620 13 // You may obtain a copy of the License at
alexbrandmeyer@620 14 //
alexbrandmeyer@620 15 // http://www.apache.org/licenses/LICENSE-2.0
alexbrandmeyer@620 16 //
alexbrandmeyer@620 17 // Unless required by applicable law or agreed to in writing, software
alexbrandmeyer@620 18 // distributed under the License is distributed on an "AS IS" BASIS,
alexbrandmeyer@620 19 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
alexbrandmeyer@620 20 // See the License for the specific language governing permissions and
alexbrandmeyer@620 21 // limitations under the License.
alexbrandmeyer@620 22 //
alexbrandmeyer@620 23 // *****************************************************************************
alexbrandmeyer@620 24 // Class: CARFACOutput
alexbrandmeyer@620 25 // *****************************************************************************
alexbrandmeyer@620 26 // The CARFACOutput object stores an array of EarOuput objects. It is meant as a
alexbrandmeyer@620 27 // container for the output generated by the CARFAC object's 'Run' and
alexbrandmeyer@620 28 // 'RunSegment' methods. Depending on the number of audio channels in the input
alexbrandmeyer@620 29 // data, the CARFACOutput will have 1 or more EarOutput obects, each of which
alexbrandmeyer@620 30 // contains a set of two dimensional float arrays (FloatArray2d) representing
alexbrandmeyer@620 31 // the neural activation patterns (NAPs) generated by the CARFAC model.
alexbrandmeyer@620 32 //
alexbrandmeyer@620 33 // The 'InitOutput' method is used to initialize the arrays in each of the
alexbrandmeyer@620 34 // EarOutput sub-objects once the target data dimensions ears (n_ears), channels
alexbrandmeyer@620 35 // (n_ch) and timepoints (n_tp) are known.
alexbrandmeyer@620 36 //
alexbrandmeyer@620 37 // The 'MergeOutput' method is for integrating a smaller CARFACOutput into a
alexbrandmeyer@620 38 // larger CARFACOutput object. This is intended to be used in the context of
alexbrandmeyer@620 39 // the CARFAC class's 'Run' and 'RunSegments' methods.
alexbrandmeyer@620 40
alexbrandmeyer@620 41 #ifndef CARFAC_Open_Source_C__Library_carfac_output_h
alexbrandmeyer@620 42 #define CARFAC_Open_Source_C__Library_carfac_output_h
alexbrandmeyer@620 43
alexbrandmeyer@620 44 #include "ear_output.h"
alexbrandmeyer@620 45
alexbrandmeyer@622 46 class CARFACOutput {
alexbrandmeyer@622 47 public:
alexbrandmeyer@622 48 void InitOutput(int n_ears, int n_ch, int32_t n_tp);
alexbrandmeyer@622 49 void MergeOutput(CARFACOutput output, int32_t start, int32_t length);
alexbrandmeyer@622 50 void StoreNAPOutput(int32_t timepoint, int ear, int n_ch, FloatArray nap);
alexbrandmeyer@622 51 void StoreBMOutput(int32_t timepoint, int ear, int n_ch, FloatArray bm);
alexbrandmeyer@622 52 void StoreOHCOutput(int32_t timepoint, int ear, int n_ch, FloatArray ohc);
alexbrandmeyer@622 53 void StoreAGCOutput(int32_t timepoint, int ear, int n_ch, FloatArray agc);
alexbrandmeyer@622 54 private:
alexbrandmeyer@620 55 int n_ears_;
alexbrandmeyer@622 56 std::vector<EarOutput> ears_;
alexbrandmeyer@620 57 };
alexbrandmeyer@620 58
alexbrandmeyer@621 59 #endif