changeset 506:db0e5e86fddd

Update OHC_NLF parameterization and parameter values
author dicklyon@google.com
date Wed, 30 May 2012 20:49:47 +0000
parents a0869cb1c99b
children 7cc44d4e9b86
files matlab/bmm/carfac/CARFAC_Design.m matlab/bmm/carfac/CARFAC_Design_Doc.txt matlab/bmm/carfac/CARFAC_OHC_NLF.m
diffstat 3 files changed, 8 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/matlab/bmm/carfac/CARFAC_Design.m	Thu May 24 22:26:56 2012 +0000
+++ b/matlab/bmm/carfac/CARFAC_Design.m	Wed May 30 20:49:47 2012 +0000
@@ -52,9 +52,8 @@
 
 if nargin < 3
   CF_CAR_params = struct( ...
-    'velocity_scale', 0.05, ...  % for the velocity nonlinearity
+    'velocity_scale', 0.1, ...  % for the velocity nonlinearity
     'v_offset', 0.04, ...  % offset gives a quadratic part
-    'v2_corner', 0.2, ...  % corner for essential nonlin
     'min_zeta', 0.10, ... % minimum damping factor in mid-freq channels
     'max_zeta', 0.35, ... % maximum damping factor in mid-freq channels
     'first_pole_theta', 0.85*pi, ...
@@ -161,12 +160,11 @@
 n_ch = length(pole_freqs);
 
 % the filter design coeffs:
-
+% scalars first:
 CAR_coeffs = struct( ...
   'n_ch', n_ch, ...
   'velocity_scale', CAR_params.velocity_scale, ...
-  'v_offset', CAR_params.v_offset, ...
-  'v2_corner', CAR_params.v2_corner ...
+  'v_offset', CAR_params.v_offset ...
   );
 
 % don't really need these zero arrays, but it's a clue to what fields
--- a/matlab/bmm/carfac/CARFAC_Design_Doc.txt	Thu May 24 22:26:56 2012 +0000
+++ b/matlab/bmm/carfac/CARFAC_Design_Doc.txt	Wed May 30 20:49:47 2012 +0000
@@ -1,6 +1,6 @@
 CARFAC Design Doc
 by "Richard F. Lyon" <dicklyon@google.com>
-updated 24 May 2012
+updated 24 May 2012 (v.237)
 
 The CAR-FAC (cascade of asymmetric resonators with fast-acting
 compression) is a cochlear model implemented as an efficient sound
--- a/matlab/bmm/carfac/CARFAC_OHC_NLF.m	Thu May 24 22:26:56 2012 +0000
+++ b/matlab/bmm/carfac/CARFAC_OHC_NLF.m	Wed May 30 20:49:47 2012 +0000
@@ -20,9 +20,9 @@
 function nlf = CARFAC_OHC_NLF(velocities, CAR_coeffs)
 % function nlf = CARFAC_OHC_NLF(velocities, CAR_coeffs)
 % start with a quadratic nonlinear function, and limit it via a
-% rational function; make the result go to zero a high
+% rational function; make the result go to zero at high
 % absolute velocities, so it will do nothing there.
 
-qnlf = ((velocities .* CAR_coeffs.velocity_scale) + ...
-  CAR_coeffs.v_offset) .^ 2;
-nlf = 1 - qnlf ./ (CAR_coeffs.v2_corner + qnlf);
+nlf = 1 ./ (1 + ...
+  (velocities * CAR_coeffs.velocity_scale + CAR_coeffs.v_offset) .^ 2 );
+