Download
Welcome to SOFiA
Who is behind SOFiA
Feature overview
System overview
Function reference
readVSAdata
mergeArrayData
F/D/T
gauss
lebedev
S/W/G
S/T/C
W/G/C
S/F/E
M/F
R/F/I
P/D/C
I/T/C
makeMTX
makeIR
visual3D
Coordinate System
Application Examples
Example 1
Example 2
Example 3
Example 4
Example 5
Example 6
Example 7
Example 8
Array Datasets
VariSphear system
Groups and Mailinglists
Contact and Support
How to Reference

SOFiA Impulse Response Reconstruction

This function recombines impulse responses or time domain signals for multiple channels from frequency domain data delivered by P/D/C or I/T/C. The internal IFFT blocklength is determined by the Y data itself: Y should have a size of [NumberOfChannels x ((2^n)/2)+1] with n={1, 2 ,3 , ...} (which is the case when using the SOFiA readVSAdata() or mergeArrayData() functions for data import) and the function returns [NumberOfChannels x resampleFactor*2^n samples. The impulse responses are windowed with a HANN window. The argument win can take values from 0-1. Where 0 means that no window is applied and 1 will apply a window to the full IR. At a value of 0.5 the first half of the impulse responses keeps unchanged and the last half is multiplied with a HANN type window. The size of the window is fitted automatically. As default choice win is set to 1/8 which should deliver good results in most of the cases. The impulse responses can be resampled to the original sampling rate before being downsampled in readVSAdata() or mergeArrayData(). Set resampleFactor = downSample to get back to the original sample rate of the measurement source material. (WARNING: Matlab Signal Processing Toolbox required for windowing and resampling)

To save processing power and calculation time the SOFiA chain works on the half-sided FFT spectrum only (NFFT/2+1). Therefore F/D/T produces half-sided spectrum output signals (fftData). The `makeIR()` function automatically reconstructs the double-sided spectrum to compute the impulse responses.



ARGUMENTS

Input

Name Type Purpose Default
Y int Frequency domain data from P/D/C or I/T/C -
win float Window IR tail [0-1] with a HANN window 1/8
resampleFactor float mtx Resampling factor 1

Output

Name Type Purpose
impulseResponses float mtx Impulse Responses
Rows: IR-Data
Cols: Channels

FILE(S):

File Type OS/Matlab
sofia_makeIR.m Help header, Function All OS

HEADER

/*
impulseResponses = sofia_makeIR( Y, [win], [resampleFactor])

------------------------------------------------------------------------------------

impulseResponses Reconstructed impulse response
Columns: Index / Channel: IR1, IR2, ..., IRn
Rows: Impulse responses (time domain)
------------------------------------------------------------------------------------
Y Frequency domain FFT data for multiple channels
Columns: Index / Channel
Rows: FFT data (frequency domain)

[win]

Window IR tail [0...1] with a HANN window
0 off
0-1 window coverage (a full, 0 off)
[default 1/8: 1/8 of the IR length is windowed]
! Signal Processing Toolbox required

[resampleFactor]

Optional resampling: Resampling factor
e.g. FS_target/FS_source
Resampling is done using MATLAB RESAMPLE
(See MATLAB documentation for more details)
! Signal Processing Toolbox required

This function recombines impulse responses for multiple channels from
frequency domain data. It is made to work with half-sided spectrum FFT
data. The impulse responses can be windowed. The IFFT blocklength is
determined by the Y data itself:

Y should have a size [NumberOfChannels x ((2^n)/2)+1 with n=[1, 2, 3, ...]
and the funtion returns [NumberOfChannels x resampleFactor*2^n] samples.

Dependencies: MATLAB Processing Toolbox required for windowing and resampling
*/