newPreB = new FilterMatrix(newStateCount,newPeek-popCount);
    public LinearFilterRepresentation changePeek(int newPeek) {	int oldPeek = this.peekCount;	if(oldPeek >= newPeek)	    throw new IllegalArgumentException("need param newPeek(" + newPeek + ") to be < oldPeek(" + oldPeek + ")"); 	int pushCount = this.getPushCount();	int popCount = this.getPopCount();	int oldStateCount = this.getStateCount();	int removeVars = oldPeek - popCount;	int addVars = newPeek - popCount;	int newStateCount = oldStateCount - removeVars + addVars;	FilterMatrix A, B, C, D, preA, preB;	FilterMatrix newA, newB, newC, newD, newPreA, newPreB;				A = this.getA();	B = this.getB();	C = this.getC();	D = this.getD();	newA = new FilterMatrix(newStateCount,newStateCount);	newA.copyRowsAndColsAt(addVars,addVars,A,removeVars,removeVars,oldStateCount-removeVars,oldStateCount-removeVars);	newA.copyRowsAndColsAt(0,addVars,A,0,removeVars,removeVars,oldStateCount-removeVars);	newA.copyRowsAndColsAt(addVars,0,A,removeVars,0,oldStateCount-removeVars,removeVars);	newA.copyRowsAndColsAt(0,0,A,0,0,removeVars,removeVars);	newA.copyRowsAndColsAt(addVars,removeVars,B,removeVars,0,oldStateCount-removeVars,addVars-removeVars);	newA.copyRowsAndColsAt(0,removeVars,B,0,0,removeVars,addVars-removeVars);	newB = new FilterMatrix(newStateCount,popCount);	newB.copyRowsAndColsAt(0,0,B,0,addVars-removeVars,removeVars,popCount-(addVars-removeVars));	newB.copyRowsAndColsAt(addVars,0,B,removeVars,addVars-removeVars,oldStateCount-removeVars,popCount-(addVars-removeVars));	for(int i=removeVars; i<addVars; i++) {	    if(i+popCount<addVars)		newA.setElement(i,i+popCount,ComplexNumber.ONE);	    else		newB.setElement(i,i+popCount-addVars,ComplexNumber.ONE);	}	//LinearPrinter.println("newA " + newA);	//LinearPrinter.println("newB" + newB);	if(this.preworkNeeded()) {	    preA = this.getPreWorkA();	    preB = this.getPreWorkB();	    newPreA = new FilterMatrix(newStateCount,newStateCount);	    newPreA.copyRowsAndColsAt(addVars,addVars,preA,removeVars,removeVars,oldStateCount-removeVars,oldStateCount-removeVars);	    newPreA.copyRowsAndColsAt(0,addVars,preA,0,removeVars,removeVars,oldStateCount-removeVars);	    newPreB = new FilterMatrix(newStateCount,newPeek-popCount);	    newPreB.copyRowsAndColsAt(0,0,preB,0,0,removeVars,removeVars);	    newPreB.copyRowsAndColsAt(addVars,0,preB,removeVars,0,oldStateCount-removeVars,removeVars);	    for(int i=removeVars; i<addVars; i++)		newPreB.setElement(i,i,ComplexNumber.ONE);	}	else {	    newPreA = null;	    newPreB = null;	}		newC = new FilterMatrix(pushCount,newStateCount);	newC.copyColumnsAt(addVars,C,removeVars,oldStateCount-removeVars);	newC.copyColumnsAt(0,C,0,removeVars);	newC.copyColumnsAt(removeVars,D,0,addVars-removeVars);				newD = new FilterMatrix(pushCount,popCount);	newD.copyColumnsAt(0,D,addVars-removeVars,removeVars);	FilterVector init = this.getInit();	FilterVector newInit = new FilterVector(newStateCount);	newInit.copyAt(0,addVars-removeVars,init);				LinearFilterRepresentation newRep; 	if(preworkNeeded())	    newRep = new LinearFilterRepresentation(newA,newB,newC,newD,newPreA,newPreB,newInit);	else	    newRep = new LinearFilterRepresentation(newA,newB,newC,newD,newInit,newPeek);	return newRep;    }