alexbrandmeyer@668: % Author: Alex Brandmeyer alexbrandmeyer@668: % alexbrandmeyer@668: % This Matlab file is part of an implementation of Lyon's cochlear model: alexbrandmeyer@668: % "Cascade of Asymmetric Resonators with Fast-Acting Compression" alexbrandmeyer@668: % to supplement Lyon's upcoming book "Human and Machine Hearing" alexbrandmeyer@668: % alexbrandmeyer@668: % Licensed under the Apache License, Version 2.0 (the "License"); alexbrandmeyer@668: % you may not use this file except in compliance with the License. alexbrandmeyer@668: % You may obtain a copy of the License at alexbrandmeyer@668: % alexbrandmeyer@668: % http://www.apache.org/licenses/LICENSE-2.0 alexbrandmeyer@668: % alexbrandmeyer@668: % Unless required by applicable law or agreed to in writing, software alexbrandmeyer@668: % distributed under the License is distributed on an "AS IS" BASIS, alexbrandmeyer@668: % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. alexbrandmeyer@668: % See the License for the specific language governing permissions and alexbrandmeyer@668: % limitations under the License. alexbrandmeyer@668: alexbrandmeyer@668: function CARFAC_GenerateTestData() alexbrandmeyer@668: % function GenerateTestData() alexbrandmeyer@668: % This function generates a set of text files in the AIMC repository that alexbrandmeyer@668: % can be used to compare the output of the C++ version of CARFAC with that alexbrandmeyer@668: % of the Matlab version. alexbrandmeyer@668: alexbrandmeyer@668: % This designates a subdirectory of the C++ CARFAC folder to store the alexbrandmeyer@668: % test data alexbrandmeyer@668: data_dir = '../../../carfac/test_data/'; alexbrandmeyer@678: precision_level = 9; alexbrandmeyer@668: alexbrandmeyer@678: % The following section generates data for the binaural test of the C++ alexbrandmeyer@678: % version of CARFAC. alexbrandmeyer@678: n_ears = 2; alexbrandmeyer@678: alexbrandmeyer@678: file_signal = wavread('plan.wav'); alexbrandmeyer@678: file_signal = file_signal(9000:9903); % trim for a faster test alexbrandmeyer@678: alexbrandmeyer@678: itd_offset = 22; % about 1 ms alexbrandmeyer@678: test_signal = [file_signal((itd_offset+1):end), ... alexbrandmeyer@678: file_signal(1:(end-itd_offset))] / 10; alexbrandmeyer@678: alexbrandmeyer@678: filename = 'file_signal_binaural_test.txt' alexbrandmeyer@678: data = test_signal; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: CF_struct = CARFAC_Design(n_ears); alexbrandmeyer@678: CF_struct = CARFAC_Init(CF_struct); alexbrandmeyer@678: [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); alexbrandmeyer@678: alexbrandmeyer@678: %Store the data for each each as individual 2d text data. alexbrandmeyer@678: nap1 = nap(:,:,1); alexbrandmeyer@678: nap2 = nap(:,:,2); alexbrandmeyer@678: bm1 = bm(:,:,1); alexbrandmeyer@678: bm2 = bm(:,:,2); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'binaural_test_nap1.txt' alexbrandmeyer@678: data = nap1; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'binaural_test_bm1.txt' alexbrandmeyer@678: data = bm1; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'binaural_test_nap2.txt' alexbrandmeyer@678: data = nap2; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'binaural_test_bm2.txt' alexbrandmeyer@678: data = bm2; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@668: alexbrandmeyer@668: alexbrandmeyer@678: % Longer audio segment test alexbrandmeyer@668: alexbrandmeyer@678: n_ears = 2; alexbrandmeyer@678: start = 80001; alexbrandmeyer@678: n_timepoints = 2000; alexbrandmeyer@678: alexbrandmeyer@678: [test_signal, fs] = wavread([data_dir 'Anka_SLTS.wav']); alexbrandmeyer@678: test_signal = test_signal(start:start+n_timepoints-1,:); alexbrandmeyer@678: size(test_signal) alexbrandmeyer@678: alexbrandmeyer@678: filename = 'file_signal_long_test.txt' alexbrandmeyer@678: data = test_signal; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: CF_struct = CARFAC_Design(n_ears, fs); alexbrandmeyer@678: CF_struct = CARFAC_Init(CF_struct); alexbrandmeyer@678: [CF_struct, nap_decim, nap, bm, ohc, agc] = CARFAC_Run(CF_struct, test_signal); alexbrandmeyer@678: alexbrandmeyer@678: %Store the data for each each as individual 2d text data. alexbrandmeyer@678: nap1 = nap(:,:,1); alexbrandmeyer@678: nap2 = nap(:,:,2); alexbrandmeyer@678: bm1 = bm(:,:,1); alexbrandmeyer@678: bm2 = bm(:,:,2); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'long_test_nap1.txt' alexbrandmeyer@678: data = nap1; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'long_test_bm1.txt' alexbrandmeyer@678: data = bm1; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'long_test_nap2.txt' alexbrandmeyer@678: data = nap2; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' '); alexbrandmeyer@678: alexbrandmeyer@678: filename = 'long_test_bm2.txt' alexbrandmeyer@678: data = bm2; alexbrandmeyer@678: dlmwrite([data_dir filename],data,'precision', precision_level,'delimiter',' ');