Fast Waveform inversion without source-encoding

Waveform inversion using `batching' optimization scheme and source estimation See the script bg2_batch.m.

[v,n,d,o] = rsf_read_all([datadir '/bg2v.rsf']);
[v0,n,d,o] = rsf_read_all([datadir '/bg2v0.rsf']);

v  = 1e-3*v;
v0 = 1e-3*v0;
[z,x] = odn2grid(o,d,n);
z = z*1e-3; x = x*1e-3;
scnsize = get(0,'ScreenSize');

% The true and initial model
%

figure('Position',scnsize./[1 1 2 2]);imagesc(x,z,v,[1.5 4.5]);colorbar;set(gca,'plotboxaspectratio',[3 1 1]);
xlabel('x [km]');ylabel('z [km]'); title('true model');
figure('Position',scnsize./[1 1 2 2]);imagesc(x,z,v0,[1.5 4.5]);colorbar;set(gca,'plotboxaspectratio',[3 1 1]);
xlabel('x [km]');ylabel('z [km]'); title('initial model');

reconstruction with batching after 17th. frequency band.

[mn,n,d,o] = rsf_read_all([resultsdir '/bg2_batch/mn_17.rsf']);
vn = real(1./sqrt(mn));

figure('Position',scnsize./[1 1 2 2]);imagesc(x,z,vn,[1.5 4.5]);colorbar;set(gca,'plotboxaspectratio',[3 1 1]);
xlabel('x [km]');ylabel('z [km]'); title('final model');
xslices = [3 8 13];
for i=1:length(xslices)
    ix = x==xslices(i);
    figure;plot(v(:,ix),z,'k',v0(:,ix),z,'k--',vn(:,ix),z,'r');axis ij; ylim([0 2]);set(gca,'plotboxaspectratio',[1 1.5 1]);
    xlabel('v [km/s]');ylabel('z [km/s]');title(['x = ' num2str(xslices(i)) ' km']);legend('true','initial','final');
end