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