annotate matlab/bmm/carfac/CARFAC_GenerateTestData.m @ 649:461d4374b6d9

Test SAI with multi-channel input.
author ronw@google.com
date Tue, 11 Jun 2013 22:05:10 +0000
parents 27f2d9b76075
children 263a05be98c4
rev   line source
alexbrandmeyer@626 1 % Author: Alex Brandmeyer
alexbrandmeyer@626 2 %
alexbrandmeyer@626 3 % This Matlab file is part of an implementation of Lyon's cochlear model:
alexbrandmeyer@626 4 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
alexbrandmeyer@626 5 % to supplement Lyon's upcoming book "Human and Machine Hearing"
alexbrandmeyer@626 6 %
alexbrandmeyer@626 7 % Licensed under the Apache License, Version 2.0 (the "License");
alexbrandmeyer@626 8 % you may not use this file except in compliance with the License.
alexbrandmeyer@626 9 % You may obtain a copy of the License at
alexbrandmeyer@626 10 %
alexbrandmeyer@626 11 % http://www.apache.org/licenses/LICENSE-2.0
alexbrandmeyer@626 12 %
alexbrandmeyer@626 13 % Unless required by applicable law or agreed to in writing, software
alexbrandmeyer@626 14 % distributed under the License is distributed on an "AS IS" BASIS,
alexbrandmeyer@626 15 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
alexbrandmeyer@626 16 % See the License for the specific language governing permissions and
alexbrandmeyer@626 17 % limitations under the License.
alexbrandmeyer@626 18
alexbrandmeyer@626 19 function CARFAC_GenerateTestData()
alexbrandmeyer@626 20 % function GenerateTestData()
alexbrandmeyer@626 21 % This function generates a set of text files in the AIMC repository that
alexbrandmeyer@626 22 % can be used to compare the output of the C++ version of CARFAC with that
alexbrandmeyer@626 23 % of the Matlab version.
alexbrandmeyer@626 24
alexbrandmeyer@626 25 % This designates a subdirectory of the C++ CARFAC folder to store the
alexbrandmeyer@626 26 % test data
alexbrandmeyer@626 27 data_dir = '../../../carfac/test_data/';
alexbrandmeyer@636 28 precision_level = 9;
alexbrandmeyer@626 29
alexbrandmeyer@636 30 % The following section generates data for the binaural test of the C++
alexbrandmeyer@636 31 % version of CARFAC.
alexbrandmeyer@636 32 n_ears = 2;
alexbrandmeyer@636 33
alexbrandmeyer@636 34 file_signal = wavread('plan.wav');
alexbrandmeyer@636 35 file_signal = file_signal(9000:9903); % trim for a faster test
alexbrandmeyer@636 36
alexbrandmeyer@636 37 itd_offset = 22; % about 1 ms
alexbrandmeyer@636 38 test_signal = [file_signal((itd_offset+1):end), ...
alexbrandmeyer@636 39 file_signal(1:(end-itd_offset))] / 10;
alexbrandmeyer@636 40
alexbrandmeyer@636 41 filename = 'file_signal_binaural_test.txt'
alexbrandmeyer@636 42 data = test_signal;
alexbrandmeyer@636 43 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 44
alexbrandmeyer@636 45 CF_struct = CARFAC_Design(n_ears);
alexbrandmeyer@636 46 CF_struct = CARFAC_Init(CF_struct);
alexbrandmeyer@636 47 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal);
alexbrandmeyer@636 48
alexbrandmeyer@636 49 %Store the data for each each as individual 2d text data.
alexbrandmeyer@636 50 nap1 = nap(:,:,1);
alexbrandmeyer@636 51 nap2 = nap(:,:,2);
alexbrandmeyer@636 52 bm1 = bm(:,:,1);
alexbrandmeyer@636 53 bm2 = bm(:,:,2);
alexbrandmeyer@636 54
alexbrandmeyer@636 55 filename = 'binaural_test_nap1.txt'
alexbrandmeyer@636 56 data = nap1;
alexbrandmeyer@636 57 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 58
alexbrandmeyer@636 59 filename = 'binaural_test_bm1.txt'
alexbrandmeyer@636 60 data = bm1;
alexbrandmeyer@636 61 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 62
alexbrandmeyer@636 63 filename = 'binaural_test_nap2.txt'
alexbrandmeyer@636 64 data = nap2;
alexbrandmeyer@636 65 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 66
alexbrandmeyer@636 67 filename = 'binaural_test_bm2.txt'
alexbrandmeyer@636 68 data = bm2;
alexbrandmeyer@636 69 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@626 70
alexbrandmeyer@626 71
alexbrandmeyer@636 72 % Longer audio segment test
alexbrandmeyer@626 73
alexbrandmeyer@636 74 n_ears = 2;
alexbrandmeyer@636 75 start = 80001;
alexbrandmeyer@636 76 n_timepoints = 2000;
alexbrandmeyer@636 77
alexbrandmeyer@636 78 [test_signal, fs] = wavread([data_dir 'Anka_SLTS.wav']);
alexbrandmeyer@636 79 test_signal = test_signal(start:start+n_timepoints-1,:);
alexbrandmeyer@636 80 size(test_signal)
alexbrandmeyer@636 81
alexbrandmeyer@636 82 filename = 'file_signal_long_test.txt'
alexbrandmeyer@636 83 data = test_signal;
alexbrandmeyer@636 84 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 85
alexbrandmeyer@636 86 CF_struct = CARFAC_Design(n_ears, fs);
alexbrandmeyer@636 87 CF_struct = CARFAC_Init(CF_struct);
alexbrandmeyer@636 88 [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal);
alexbrandmeyer@636 89
alexbrandmeyer@636 90 %Store the data for each each as individual 2d text data.
alexbrandmeyer@636 91 nap1 = nap(:,:,1);
alexbrandmeyer@636 92 nap2 = nap(:,:,2);
alexbrandmeyer@636 93 bm1 = bm(:,:,1);
alexbrandmeyer@636 94 bm2 = bm(:,:,2);
alexbrandmeyer@636 95
alexbrandmeyer@636 96 filename = 'long_test_nap1.txt'
alexbrandmeyer@636 97 data = nap1;
alexbrandmeyer@636 98 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 99
alexbrandmeyer@636 100 filename = 'long_test_bm1.txt'
alexbrandmeyer@636 101 data = bm1;
alexbrandmeyer@636 102 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 103
alexbrandmeyer@636 104 filename = 'long_test_nap2.txt'
alexbrandmeyer@636 105 data = nap2;
alexbrandmeyer@636 106 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');
alexbrandmeyer@636 107
alexbrandmeyer@636 108 filename = 'long_test_bm2.txt'
alexbrandmeyer@636 109 data = bm2;
alexbrandmeyer@636 110 dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');