sfstoolbox / sfs-matlab

SFS Toolbox for Matlab/Octave
https://sfs-matlab.readthedocs.io
MIT License
98 stars 39 forks source link

Corrected Driving Functions for 2.5D WFS #37

Closed fietew closed 8 years ago

fietew commented 9 years ago

This branch is still work in progress. I added the stationary phase approximated driving functions (reference point and reference line) for point sources, focused source and plane waves. Furthermore, I tried to remove doubled driving functions. The time domain driving functions for plane waves are still missing.

fietew commented 9 years ago

I am still not sure, if it is important/necessary to time-reverse the WFS-pre-filter for the focused sources. At the moment, we don't care about the time reversal and just use the non-time-reversed pre-filter

fietew commented 8 years ago

Tested 2.5D WFS driving function for monochromatic point source with:

SFS_start;

conf = SFS_config;
conf.secondary_sources.size = 20;
conf.secondary_sources.number = 512;
conf.secondary_sources.geometry = 'linear';
conf.secondary_sources.center = [0,2,0];
conf.resolution = 500;

X = 0;
Y = [-2,2];
Z = 0;
f = 2000;

xs = [0, 3, 0];
src = 'ps';

conf.driving_functions = 'reference_point';
[Ppoint,~,y] = sound_field_mono_wfs(X,Y,Z,xs,src,f,conf);
conf.driving_functions = 'reference_line';
Pline = sound_field_mono_wfs(X,Y,Z,xs,src,f,conf);
Pgt = sound_field_mono_point_source(X,Y,Z,xs,f,conf);

figure(1);
plot(y,real(Ppoint),'r',y,real(Pline),'b-.',y,real(Pgt),'g--')
xlabel('y/m');
ylabel('Re(P(y))');

figure(2);
plot(y,db(Ppoint),'r',y,db(Pline),'b-.',y,db(Pgt),'g--')
xlabel('y/m');
ylabel('20log_{10}(abs(P(y)))');
fietew commented 8 years ago

Alright, I think this is ready for merge, now.