- 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 5
This example shows 4 "plane waves" impinging to a real array in a rigid sphere configuration that arrive at different times. We work on a real array dataset: EXAMPLE 3. The four sources have the same level but different time delays (45°:0ms, 15°:16ms, 345°:32ms, 315°:48ms). This example shows how to get access to the spatiotemporal sound field information running a plane wave decomposition on different time windows.
File(s)
Run `sofiaAE5.m`.
Locate the folder `EXAMPLE3_SpatioTemporal` containing the required array data.
Output
Take care: This figure shows frontal views of the array response and the photo on top shows the rear side of the array.
Code
/*
% SOFiA example 5: Spatiotemporal resolution
% SOFiA Version : R11-1220
% Array Dataset : R11-1018
clear all
clc
% Read VariSphear dataset
% !!! LOCATE THE FOLDER: "EXAMPLE2_LevelResolution"
timeData = sofia_readVSAdata();
|
|
|
figure(2) % Enable to get an IR overview
clf();
area(timeData.irOverlay');
fftOversize = 2;
startSample = [400 1100 1800 2500]; % Examplary values (Enable area plot)
blockSize = 256;
figure(1)
clf();
for ctr=1:size(startSample, 2)
% Here we have simply put a loop around, because this is good for
% understanding this experiment. The loop content can easily be optimized.
% Transform time domain data to frequency domain and generate kr-vector
[fftData, kr, f] = sofia_fdt(timeData, fftOversize, startSample(ctr), startSample(ctr)+blockSize);
% Spatial Fourier Transform
Nsft = 5;
Pnm = sofia_stc(Nsft, fftData, timeData.quadratureGrid);
|
% Radial Filters for a rigid sphere array
Nsft = 5;
Pnm = sofia_stc(Nsft, fftData, timeData.quadratureGrid);
% Radial filters for a rigid sphere array
Nrf = Nsft; % radial filter order
maxAmp = 10; % Maximum modal amplification in [dB]
ac = 2; % Array configuration: 2 0 Rigid Sphere
dn = sofia_mf(Nrf, kr, ac, maxAmp); % radial filters
% Make MTX
Nmtx = Nsft;
krIndex = 90; % Choose the kr-bin (Frequency) to display.
mtxData = sofia_makeMTX(Nmtx, Pnm, dn, krIndex);
subplot(2, 2, ctr);
sofia_visual3D(mtxData, 0);
view(90, 0)
end
disp(The plot shows the response at a frequency of ',num2str(round(10*f(krIndex))/10),'Hz');
|
*/ |
|
|