pdaPlot

Plots and saves specifically for primal-dual algorithm.

Reserved numbers: 31-40. Used numbers 31-36, see start.html.

Contents

Syntax

pdaPlot(iOut,seti,pdas,out)

Description

pdaPlot(iOut,seti,pdas) plots and saves primal-dual algorithm specific figures of outer iteration iOut.

Input Arguments

Specific fields in seti influencing the figures are described in setGeomSim.html in the section "Subfunction: setFigureSettings".

Output Arguments

Figures are plotted and saved, see start.html

See Also

Code

function pdaPlot(iOut,seti,pdas,out)
ps = pdas.pdaStopInd;
x = 1:ps;
clear ps;

figure 41: terms fd, fs, fg, fp

figure(41);
set(gcf,'Visible',seti.plotVisible);
[ax,h1,h2] = plotyy([x',x',x'],[pdas.minf.fs(x),pdas.minf.fg(x),pdas.minf.fp(x)],x',pdas.minf.fd(x));
legend([h1;h2],'fs (left axis)','fg (left axis)','fp (left axis)','fd (right axis)');
if ~seti.plotPublish
    xlabel('pda (inner) iterations');
    title('Parts of min. functional');
end
axis(ax,'square');
if out == 2
    savePngFig(41,iOut,seti);
end

figure 42: pda err and relLinDisInPda

figure(42);
set(gcf,'Visible',seti.plotVisible);
[ax,h1,h2] = plotyy(x,pdas.errInPda(x)',x,pdas.relLinDisInPda(x)');
legend([h1;h2],'rel. error','relLinDis = disLinInPda/dis');
if ~seti.plotPublish
    xlabel('pda iterations');
    if pdas.ThetaiOutV(iOut) ~= 0
        fig11title = sprintf('Pda inner iterations: rel. error, rel. lin. dis (ThetaiOut = %1.2g)',pdas.ThetaiOutV(iOut));
    else
        fig11title = sprintf('Pda inner iterations: rel. error, rel. lin. dis');
    end
    title(fig11title);
end
axis(ax,'square');
if out == 2
    savePngFig(42,iOut,seti);
end

figure 43: pda lin. and nonlin. disc.

% later: maybe only interesting if ibreak == true...
figure(43);
set(gcf,'Visible',seti.plotVisible);
[ax,h1,h2] = plotyy(1:iOut,pdas.relDis(1:iOut)',1:iOut,pdas.pdaNv(1:iOut)');
legend([h1;h2],'rel dis = lin. dis / nonlin. dis','max. inner iterations');
if ~seti.plotPublish
    xlabel('outer iterations');
    title('Pda outer iterations: lin. and non-lin. dis');
end
axis(ax,'square');
if out == 2
    savePngFig(43,iOut,seti);
end

figure 44: pda inner iterations: parts of min. func. M1 = F(Kh), M2 = G(h)

if 0
    figure(44);
    set(gcf,'Visible',seti.plotVisible);
    %plot(x,pdas.MTvN(x),x,pdas.M1vN(x),x,pdas.M2vN(x));
    [ax,h1,h2] = plotyy(x',pdas.M1vN(x),[x',x'],[pdas.M2vN(x),pdas.MTvN(x)]);
    if ~seti.plotPublish
        legend([h1;h2],'F(Kh)','G(h)','F(Kh)+G(h)');
        xlabel('pda iterations');
        title('Pda inner iterations: F(Kh) and G(h)');
    end
    axis(ax,'square');
    if out == 2
        savePngFig(44,iOut,seti);
    end
end

figure 45: ThetaiOut (inner tolerance principle)

if 0
    figure(45);
    set(gcf,'Visible',seti.plotVisible);
    plot(1:iOut,pda.ThetaiOutV(1:iOut))
    if ~seti.plotPublish
        xlabel('outer iterations');
        title('ThetaiOut (inner tolerance principle)');
    end
    axis square;
    if out == 2
        savePngFig(45,iOut,seti);
    end
end

figure 46: tau, sigma values plot

if 0
    % Currently tauVal and sigmaVal are not stored.
    figure(46);
    set(gcf,'Visible',seti.plotVisible);
    plot(x,pda.tauVal(x),x,pda.sigmaVal(x))
    legend('tau','sigma');
    if ~seti.plotPublish
        xlabel('pda (inner) iterations');
        title('Values of sepsizes tau and sigma');
    end
    axis square;
    if out == 2
        savePngFig(46,iOut,seti);
    end
end
end