annotate trunk/matlab/bmm/carfac/CARFAC_binaural.m @ 516:68c15d43fcc8

Added MATLAB code for Lyon's CAR-FAC filter cascade.
author tom@acousticscale.org
date Wed, 15 Feb 2012 21:26:40 +0000
parents
children aa282a2b61bb
rev   line source
tom@516 1 % Copyright 2012, Google, Inc.
tom@516 2 % Author: Richard F. Lyon
tom@516 3 %
tom@516 4 % This Matlab file is part of an implementation of Lyon's cochlear model:
tom@516 5 % "Cascade of Asymmetric Resonators with Fast-Acting Compression"
tom@516 6 % to supplement Lyon's upcoming book "Human and Machine Hearing"
tom@516 7 %
tom@516 8 % Licensed under the Apache License, Version 2.0 (the "License");
tom@516 9 % you may not use this file except in compliance with the License.
tom@516 10 % You may obtain a copy of the License at
tom@516 11 %
tom@516 12 % http://www.apache.org/licenses/LICENSE-2.0
tom@516 13 %
tom@516 14 % Unless required by applicable law or agreed to in writing, software
tom@516 15 % distributed under the License is distributed on an "AS IS" BASIS,
tom@516 16 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
tom@516 17 % See the License for the specific language governing permissions and
tom@516 18 % limitations under the License.
tom@516 19
tom@516 20 % Test/demo hacking for audio/hearing/filterbanks/carfac/matlab/ stuff
tom@516 21
tom@516 22 clear variables
tom@516 23
tom@516 24 agc_plot_fig_num = 1;
tom@516 25
tom@516 26 tic
tom@516 27
tom@516 28 %test_signal = wavread('pbav4p-22050.wav');
tom@516 29 test_signal = wavread('plan-twochannel-1ms.wav')
tom@516 30 %test_signal = wavread('binaural.wav')
tom@516 31 %test_signal = test_signal(20000:2); % trim for a faster test
tom@516 32
tom@516 33 CF_struct = CARFAC_Design; % default design
tom@516 34 cum_k = 0; % not doing segments, so just count from 0
tom@516 35
tom@516 36 % Run mono, then stereo test:
tom@516 37 n_mics = 2
tom@516 38 CF_struct = CARFAC_Init(CF_struct, n_mics);
tom@516 39
tom@516 40 [nap, CF_struct, cum_k, nap_decim] = ...
tom@516 41 CARFAC_Run(CF_struct, test_signal, cum_k, agc_plot_fig_num);
tom@516 42
tom@516 43 % Display results for 1 or 2 mics:
tom@516 44 for mic = 1:n_mics
tom@516 45 smooth_nap = nap_decim(:, :, mic);
tom@516 46 figure(mic + n_mics) % Makes figures 2, 3, and 4
tom@516 47 image(63 * ((smooth_nap)' .^ 0.5))
tom@516 48
tom@516 49 colormap(1 - gray);
tom@516 50 end
tom@516 51
tom@516 52 toc
tom@516 53
tom@516 54 % Show resulting data, even though M-Lint complains:
tom@516 55 cum_k
tom@516 56 CF_struct
tom@516 57 CF_struct.filter_state
tom@516 58 CF_struct.AGC_state
tom@516 59 min_max = [min(nap(:)), max(nap(:))]
tom@516 60 min_max_decim = [min(nap_decim(:)), max(nap_decim(:))]