Forums

design a filter from material absorption coefficients

Started by Emile November 23, 2005
Hi,

Can anybody point me to a paper/book/site/algorithm/tool on how to 
desing a low order filter to model the absorption coefficients of 
materials. I have found that these coefficients usually are given for 6 
octave bands (125,250,500,1000,2000,4000Hz). More information on this 
subject is greatly appreciated.


Emile Vrijdags
Emile wrote:
> Hi, > > Can anybody point me to a paper/book/site/algorithm/tool on how to > desing a low order filter to model the absorption coefficients of > materials. I have found that these coefficients usually are given for 6 > octave bands (125,250,500,1000,2000,4000Hz). More information on this > subject is greatly appreciated. > >
Ok, i found that the matlab function [a,b] = invfreqz(h,w,n,m) should do the trick, but i have some trouble with the w input param. h is a vector with the complex frequency response at the frequency points specified in vector w, but these frequency points are specified in radians between 0 and Pi. I dont really understand how to specify these octave bands (expressed in Hz) in radians between 0 and Pi. Should i do some sort of mapping like [0 - samplingfrequency] -> [0 - Pi]?
> Emile Vrijdags
Emile wrote:
> Emile wrote: > > Hi, > > > > Can anybody point me to a paper/book/site/algorithm/tool on how to > > desing a low order filter to model the absorption coefficients of > > materials. I have found that these coefficients usually are given for 6 > > octave bands (125,250,500,1000,2000,4000Hz). More information on this > > subject is greatly appreciated.
Most attempts I have seen to solve this problem, use modeling programs for whatever physics is involved in the acoustic propagation. Which basically is avery messy approach if the numerical model does not fit the physics "sufficiently well". Others use empirical models, presumably based on some statistical fitting of experimental data. The problem is that most parameters change, and depend on all sorts of factors. Is there a structure on texture on the surface where the sound hits? If so, the reflection coefficient will probably depend on both frequency and incidence angle, perhaps even azimuth angle. Is the body infinitely thick, like the earth, or is there a finite depth of, say, a wall in a room? The sound is likely to penetrate a wall of finite thickness at some combination of angle and frequency. Do you measure in free space, like outdoors, or in an enclosed cavity, like a small room? In the former case you need to account for Lloyd mirror effects, in the latter you may be dealing with normal modes. There are so many factors to consider that it is not possible to come up with a general answer your question.
> Ok, i found that the matlab function > > [a,b] = invfreqz(h,w,n,m) > > should do the trick, but i have some trouble with the w input param. h > is a vector with the complex frequency response at the frequency points > specified in vector w, but these frequency points are specified in > radians between 0 and Pi. > > I dont really understand how to specify these octave bands (expressed in > Hz) in radians between 0 and Pi. Should i do some sort of mapping like > [0 - samplingfrequency] -> [0 - Pi]?
Almost correct. You need to map it as [0 - samplingfrequency] -> [0 - 2*Pi] (a factor 2 in the last interval). Make sure you use a calibrated microphone, calibrated amplifiers and calibrated ADCs. Or the results of your analysis will not be very useful. Rune
Emile wrote:
> Emile wrote: > >> Hi, >> >> Can anybody point me to a paper/book/site/algorithm/tool on how to >> desing a low order filter to model the absorption coefficients of >> materials. I have found that these coefficients usually are given for >> 6 octave bands (125,250,500,1000,2000,4000Hz). More information on >> this subject is greatly appreciated. >> >> > > Ok, i found that the matlab function > > [a,b] = invfreqz(h,w,n,m) > > should do the trick, but i have some trouble with the w input param. h > is a vector with the complex frequency response at the frequency points > specified in vector w, but these frequency points are specified in > radians between 0 and Pi. > > I dont really understand how to specify these octave bands (expressed in > Hz) in radians between 0 and Pi. Should i do some sort of mapping like > [0 - samplingfrequency] -> [0 - Pi]? >
I have found the right expression is in radians/sample (oops). I was thinking in radians/sec, and then i could only specify frequencies up to 0.5Hz so the mapping should be imo: 1 Hz (cycle/second) = 1/fs * 2*Pi rad/sample
> > >> Emile Vrijdags

Emile wrote:
>> Ok, i found that the matlab function
etc. I have a hard time understanding your question, let alone the answers given. Are you trying to model the sound absorption of unspecified materials? Or do you want to model the impulse response of a proposed space? Can you be a little more specific? For the convenience of mathematical treatment in a manner that matches our pshychoacoustic perceptions, the referenced frequency bands are enumerated on a factor-of-2 scale ("octave") basis, centering on 1,000 Hz. That same scale is sometimes further subdivided for frequency analysis into 1/3-octaves on a finer scale as increments of 2 to the 1/3 power. Otherwise: My experience is that most firm surface materials have little absorption below 100 Hz, and that high frequency absorption depends on the depth of the porous material comprising that surface. If you are looking for a general approximation of the effect of surfaces in a room, then represent the surface at its position x, y, z, the surface normal as a vector, and presume an absorption of o.5 when it is thought to be absorptive, and 0 if it is thought to be reflective. The resulting mathematical sound decay and reflections after a mathematical sound impulse will fairly well typify the room; this impulse response will be close to reality. Then you can mathematically vary the respective areas, their location and their orientation to produce the space impulse response that you want. Angelo Campanella.