This function calculates a room's impulse response for an arbitrarily positioned sound source in an arbitrarily dimensioned rectangular room, as it would be heard at an arbitrary position. The output of RIR.m is a vector and can be used as an FIR filter to produce a reverb effect. To implement this filter you will need to do a fast convolution. I have another program, FCONV.m that performs this task. It is available on the Mathworks File Exchange.
For instructions on how to use this function, put RIR.m in your Matlab work folder and type "help rir."
The physics theory used by this function is not perfect. However, the function was intended to be used for space rendering in audio productions, and for this it works pretty well. For an article detailing the theory used go to http://www.sgm-audio.com/research/rir/rir.html.
Some Additional Notes:
The following was taken from an email. It regards the input variable N.
"...During the computation, the end of the reverb tail gets cut off. The variable N relates to how long the tail is prior to the cut off. If N=6 then some echoes that have undergone more than 6 reflections and will be unaccounted for. Additionally no echoes that have undergone more than 3*N=18 reflections will be accounted for. You may use any value of N you like. However, small N may mean that the impulse response is shorter than the Sabine reverb time, and large N may mean that it is longer..."
As for the reflection coefficient R, I usually use a positive value. However, a negative value for R will produce an output that more closely resembles more traditional impulse response calculations.