package conv.decon; import jam.vector.*; import juice.solver.*; import juice.operator.*; import rsf.vector.*; import conv.convt.*; /** * I solve y = B x for x. <BR> * y is a known time series (trace).<BR> * B is a known convolution operator of the blur (wavlt).<BR> * x is an unknown relectivity. <BR> * This creates the normal equations: y_n = B'y and B_n = B'B and * calls a CGSolver to solve y_n = B_n x, respectively B'y = B'B x. */ public class TcaiDecon { public static void main(String[] args) { Rsf yy = RsfFactory.newRsf("./trace.H"); // read y Rsf bb = RsfFactory.newRsf("./wavlt.H"); // read b Tcai convB = new TcaiFactory(bb). // create B getTcaiFromOutputSpace((RsfSpace) yy.getSpace()); Vector yn = convB.adjoint().image(yy); // create yn = B'y CompoundLinOpAdj convBn = // create Bn = B'B new CompoundLinOpAdj(convB, convB.adjoint()); Rsf xx = (Rsf) convBn.getDomain().newMember(); // create x new CGSimple(500).solve(convBn,yn,xx); // solve yn = Bn x xx.write( System.out ); // write x } }