1 namespace spacereduction{
59 .false IncludeInitialSpace =
false;
72 function plotSummary(pm,context) {
73 plotSummary@spacereduction.BaseSpaceReducer(
this, pm, context);
74 if ~isempty(this.SingularValues)
75 str = sprintf(" %s: POD singular value decay ",context);
76 h = pm.nextPlot(" podreducer_singvals ",str,...
77 " subspace size "," singular values ");
78 semilogy(h,this.SingularValues," LineWidth ",2);
83 warning(" spacereduction:PODReducer ",...
84 " Singular value data empty. Not providing summary. ");
89 methods(Access=protected)
90 function [V,W] = generateReducedSpaceImpl(this, model, subset)
95 td = md.TrajectoryData;
96 nt = td.getNumTrajectories;
98 error(" No training data found in ModelData. ");
102 if this.IncludeTrajectoryFxiData
103 if isempty(md.TrajectoryFxiData)
104 error(" No training fxi data found in ModelData. ");
106 td = data.JoinedBlockData(td, md.TrajectoryData);
109 if this.IncludeFiniteDifferences
110 td = data.FinDiffBlockData(td);
115 Vex = md.InputSpaceSpan(subset,:);
117 if this.IncludeInitialSpace
118 is = this.getInitialSpace(md.TrajectoryData, this, subset);
122 [V, this.SingularValues] = this.computePOD(td, Vex, subset);
123 this.ProjectionError= flipud(cumsum(flipud(this.SingularValues)));
129 o = general.Orthonormalizer;
131 id = speye(size(V,2));
134 diff = max(max(abs(V^
t*V-
id)));
138 V = o.orthonormalize(V);
IReductionSummaryPlotProvider:
POD: Implements proper orthogonal decomposition.
Base class for all space reduction algorithms.