autoparam3alpha
Analogous to autoparam3 but looking for the best regularization parameter alpha if beta = 0. See autoparam3.html for documentation.
Warning: This function clears variables, creates a directory and creates files.
Contents
Code
disp(' ') disp('----- Automatic choice of regularization parameter alpha (for beta = 0) -----') disp(' ')
close all; if ~exist('inseti','var') inseti = ''; end clearvars -except inseti; ticAutoParam = tic;
In-place settings:
% ---------------------------------------------------------------------- % Set initial regularization parameter alpha: switch inseti case 'example3Dalg' alpha0 = 1000; case 'fresnelPda' alpha0 = 1E6; case 'shipBorePda' alpha0 = 1000; case 'shipBorePdaNlast' alpha0 = 1000; case 'fresnelShrink' alpha0 = 1E3; case 'fresnelSynthShrink' alpha0 = 0.01; case 'shipBorePdaWav' alpha0 = 0.01; case 'shipBoreShrinkWav' alpha0 = 1E-2; case 'shipFactMeth' alpha0 = 1E4; case 'defaultFactMeth' alpha0 = 1E6; otherwise alpha0 = 1E5; end % ---------------------------------------------------------------------- % Further in-place settings (changes are not recommended): % N = 30; % maximal number of steps in bisection method q = 500/1E-5; % quotient of alpha/beta (default: seti.alpha = 500; seti.beta = 1E-5;) dummy = 0; % 0: no dummy function (use IPscatt); 1: dummy function to test this routine (result \approx 500)
Initialization
inAuto01init; alpha(1) = alpha0;
Process
for i = 1:N % Evaluate the current alpha % beta(i) = 0; % beta = alpha./q; % compute beta inAuto02eval; % Reconstruction with alpha and beta; check, whether discrepancy principle border reached; output result inAuto03decAlpha; % decision (try alpha/beta and decide which alpha is next tried) if breakfor % breakfor is set in inAuto03decAlpha; break; end end
Output
if startbis == 0 disp('Attention: startbis is still 0, i.e. the choice was stopped although bisection method was not started yet.') disp('Suggestions:'); disp(' - Increase the number of iterations N to search a parameter.') disp(' - Increase seti.tau to reach the discrepancy principle.') disp(' - Increase the numer of iterations of the inversion to get a better result.') end if startbis == 1 disp('Choose last a as alpha, because it fulfills the discrepancy principle.') disp('Result of automatic parameter choice:') % fprintf('alpha = %g, beta = %g\n',alpha(i),beta(i)); % fprintf('results in dis = %g\n',disAlphaBeta(i)'); fprintf('alpha = %g, beta = 0\n',a); % is adapted for autoparam3alpha; fprintf('results in dis = %g\n',da); end tocAutoParam = toc(ticAutoParam); fprintf('Elapsed time of automatic parameter choice is %05.1f min.\n',tocAutoParam/60); % -- Plot results -- regplot = alpha(1:stopind); % regplot is alpha(...) or beta(...) inAuto04plot; % plot
usevaralphabeta = 0; % take it out of service for further computations