The Nth Octave Hand Arm and AC Filter Tool Box is based on the octave toolbox by Christophe Couvreur which is on the Matlab File Exchange ID number 69.
This toolbox makes the filters more stable. For high sampling rates the time records are downsampled. For the low sampling rates the time records are upsampled. Depending on the Filter types. Iterative resampling is used in the Nth octave band time filter to improve the attenuation of the resample program. Also the filters are settled by preappending time data, then deleting the preappended data after filtering.
There are two options for the downsampling filters to optimize
performance for continuous signals or for impulsive signals.
For continuous noise the time domain does not have significant
impulses; however, for impulsive time records there are often very large impulses with distinctive peaks.
There are two antialiasing filters and interpolation schemes available. The first program is the built-in Matlab "resample" progam which uses a Kaiser window fir filter for antialising and uses an unknown interpolation method. The second program available for downsampling is bessel_down_sample which uses a Bessel filter for antialiasing and uses interp with the cubic spline option for interpolation.
The resample function has good antialising up to the Nyquist frequency; however, it has significant ringing effect when there are impulses. The bessel_down_sample function has good antialising; however, there is excessive attenuation near the Nyquist frequency. The bessel_down_sample function experiences no ringing due to impulses so it is very useful for peak estimation.
The following programs were written by Edward L. Zechmann Last modified 5 August 2010.
Leq_all_calc: calculates the A-weighted, C-weighted and Linear weighted sound levels and other metrics given a time record in Pa.
ACweight_time_filter: applies an A or C weighting filter to a time record and returns the A or C weighted time record.
ACdsgn: designs A and C weighting filters for use with the program filter.
hand_arm_time_fil Useful in characterizing hand arm vibrations of powered hand tools. Applies the hand-arm filters to a tie record according to ISO 5349-1.
Nth_oct_time_filter: applies a digital filter to a time record and returns the center frequencies, sound levels, peak levels, and time records in each band.
Nth_octdsgn designs a digital filter given the sampling rate, center frequency, number of bands per octave, and the order of the butterworth filter.
Test_ACweight Tests the A and C weighting filters using sinusoids. The examples indicate the accuracy of estimating LeqA, LeqC and Peak levels. The examlpes output data arrays and plots of the filter tolerances.
Test_hand_arm Tests the hand-arm vibrations filters using sinusoids. The output data and plots indicate how accurately RMS acceleration of sinusoids can be estimated.
Test_Nth_oct_filters1 Tests the Nth octave band filters usign sinusoids. The program outputs data files and plots which indicate the eaccuracy of estimating Leq and Peak levels with the 1/3 octave and 1/12 octave band filters. The examles may take 2 to 12 hours to run.
Test_Nth_octave_Band2: tests the filters using known spectral distributions provided by spatialpattern by Jon Yearsley Fex ID 5091. The program creates white, pink, and brown noise and returns the Nth octave band spectra and time records and a plot of the spectra.
If you find any bugs or have and questions please post a comment or send me an email at email@example.com
Edward Zechmann (2021). Nth_Oct_Hand_Arm_&_AC_Filter_Tool_Box (https://www.mathworks.com/matlabcentral/fileexchange/22512-nth_oct_hand_arm_-_ac_filter_tool_box), MATLAB Central File Exchange. Retrieved .
In a future revision, I will add some comments to clarify where the various terms are located in the corresponding equations. g1=2*pi*K*f4^2; % Term is in numerator of H_w(s). f=4*pi^2*f4^2; % Term is in numerator of H_b(s). The program does not seem to have any typos.
Hi, great to see your project here!
I have the same question as Chris: Is the filter, in any way, validated to conform to the ISO 5349-2001 standard?
I hope you find the time to answer since I would very much like to use your work.
Is there a typo in the calculation of g1 in the hand_arm_fil function?
be replaced with: g1=4*pi^2*K*f4^2; ???
So does the function, hand_arm_time_fil, weight the acceleration as according to ISO 5349-2001?
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!