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 Wave Generator Core

The W/G/C Wave Generator Core delivers ideal analytical fourier coefficients emulating a full spectrum (0-FS/2) wave impact to an array.


ARGUMENTS

Input

Name Type Purpose Default
N int Maximum order -
r float Microphone radius in m
Can also be a vector for rigid/dual sphere configurations:
(1,1) => rm Microphone Radius
(2,1) => rs Sphere Radius or Microphone2 Radius
! If only one radius (rm) is given using a Rigid/Dual Sphere Configuration:
rs = rm. In this case only one kr-vector is returned.
-
ac int

Array configuration
0: Open Sphere with p Transducers
1: Open Sphere with pGrad Transducers
2: Rigid Sphere with p Transducers
3: Rigid Sphere with pGrad Transducers
4: Dual Open Sphere with p Transducers

-
FS int

Sampling rate

-
NFFT int

FFT Order (Number of bins) should be 2^x, x=1,2,3,…

-
AZ float

Azimuthal angle of the wave (Refer to Coordinate System)

-
EL float

Elevation angle of the wave (Refer to Coordinate System)

-
t float

Time delay in s

0
c float

Speed of sound in m/s

343.0
wavetype int

0: Plane wave, 1: Spherical wave

0
ds float

Source distance in m (For wavetype = 1, spherical wave only)
WARNING: If NFFT is smaller than the timer the wavefront needs
to travel from the source to the array, the impulse response will by
cyclically shifted (cyclic convolution)

1m

Angles AZ, EL are in RAD

Output

Name Type Purpose
fftData complexfloat mtx Frequency domain data for S/T/C
kr float vec [1xNFFT/2+1]or
float mtx[2xNFFT/2+1]
kr-Vector (k: wave number, r: radius)
Can also be a matrix krs for rigid sphere configurations:
(1,:) =>krm referring to the Microphone Radius
(2;:) =>krs referring to the Sphere/Microphone2 Radius


FILE(S):

File Type OS/Matlab
sofia_wgc.m Help header All OS
sofia_wgc.mexmaci64 MEX Core OS-X Intel
sofia_wgc.mexw32 MEX Core Windows, MATLAB32
sofia_wgc.mexw64 MEX Core Windows, MATLAB64
sofia_wgc.cpp C/C++ source All OS
sofia_radial.h internal C/C++ header All OS
sofia_radial.cpp internal C/C++ header/source All OS


HEADER

/*
[Pnm, kr] = sofia_wgc(N, r, ac, FS, NFFT, AZ, EL,...
                t, c, wavetype, ds, lSegLim, uSegLim, SeqN)

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

Pnm Spatial Fourier Coefficients
Columns: nm coeff
Rows: FFT bins

kr

kr-Vector
Can also be a matrix [krm; krs] for rigid sphere configurations:
[1;:] => krm referring to the Microphone Radius
[2;:] => krs referring to the Sphere/Microphone2 Radius
------------------------------------------------------------------------------------
N Maximum transform order
r Microphone Radius
Can also be a vector for rigid sphere configurations:
[1,1] => rm Microphone Radius
[2,1] => rs Sphere Radius (Scatterer)

q_grid

Quadrature grid [default LEB110]
Columns: Position Number 1...M
Rows: [AZ EL Weight]
Angles AZ, EL in [RAD]

ac

Array Configuration
0 Open Sphere with p Transducers
1 Open Sphere with pGrad Transducers
2 Rigid Sphere with p Transducers
3 Rigid Sphere with pGrad Transducers (Thx to Nils Peters!)
4 Dual Open Sphere with p Transducers (Thx to Nils Peters!)
FS Sampling Frequency
NFFT FFT Order (Number of bins) shhould be 2^x, x=1,2,3,...
AZ Azimuth angle in [DEG] 0-2pi
EL Elevation angle in [DEG] 0-pi
c Speed of sound in [m/s] (Default: 343m/s)
t Time Delay in s
wavetype Type pf the Wave. 0: Plane wave (default); 1: Spherical Wave
ds Distance of the source in [m] (For wavetype = 1 only)
Warning: If NFFT is smaller than the time the wavefront
needs to travel from the source to the array, the impulse
response will by cyclically shifted (cyclic convolution).
lSegLim (Lower Segment Limit) Used by the S/W/G wrapper
uSegLim (Upper Segment Limit) Used by the S/W/G wrapper
SegN (Segment Order)       Used by the S/W/G wrapper
*/