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 application example 2

In the second example we generate a full audio spectrum unity plane wave of order N=5 impinging from Azimuth = 0 and Elevation = pi/2 to an open sphere array sampling on a 110 points Lebedev grid using S/W/G. We observe the array responses in different fft-bins using makeMTX and visual3D. Spatial aliasing artifacts arise at higher frequencies that destroy the plane wave response and produce very high output levels.

File(s)

Run `sofiaAE2.m`.

Output

SOFiA_IMG/example2output.jpg

Code

/*
% SOFiA example 2: Sampled unity plane wave simulation for different kr
% SOFiA Version : R11-1220

clear all;
clc;

% Generate a full audio spectrum plane wave using S/W/G

r = 0.1; % Array radius
ac = 0; % Rigid Sphere
FS = 48000; % Sampling Frequency
NFFT = 128; % FFT-Bin
AZ = 0*(pi/180); % Azimuth angle
EL = 90*(pi/180); % Elevation angle




quadrature_grid = sofia_lebedev(110, 0); % EXAMPLE GRID LEB110; No Plo

[fftData, kr] = sofia_swg(r, quadrature_grid, ac, FS, NFFT, AZ, EL);

% Spatial Fourier Transform

Nsft = 5; % Transform order
Pnm = sofia_stc(Nsft, fftData, quadrature_grid);

% Make radial filters

Nrf = Nsft; % Radial filter order
dn = sofia_mf(Nrf, kr, ac);

% Make visualization MTX

Nmtx = 5;
krIndex = 15; % Choose the kr-bin (Frequency) to display.
mtxDataLOW = sofia_makeMTX(Nmtx, Pnm, dn, krIndex);

krIndex = 24; % Choose the kr-bin (Frequency) to display.
mtxDataMID = sofia_makeMTX(Nmtx, Pnm, dn, krIndex);

krIndex = 30; % Choose the kr-bin (Frequency) to display.
mtxDataHIGH = sofia_makeMTX(Nmtx, Pnm, dn, krIndex);

krIndex = 40; % Choose the kr-bin (Frequency) to display.
mtxDataVERYHIGH = sofia_makeMTX(Nmtx, Pnm, dn, krIndex);

% Plot Responses for different kr (Example values)

figure(1)
clf();

subplot(2, 2, 1)
sofia_visual3D(mtxDataLOW, 0) % Low Alias

subplot(2, 2, 2)
sofia_visual3D(mtxDataMID, 0); % Some Alias

subplot(2, 2, 3)
sofia_visual3D(mtxDataHIGH, 0); % Strong Alias

subplot(2,2,4)
sofia_visual3D(mtxDataVERYHIGH, 0); % Extreme Alias

*/