newMatrix.copyAt(oldPeek+(i-1)*oldPop, i*oldPush, oldMatrix);
newMatrix.copyAt(i*oldPop, i*oldPush, oldMatrix);
    public LinearFilterRepresentation expand(int factor) {	if (factor < 1) {	    throw new IllegalArgumentException("can't expand linear filter representation by factor=" + factor + "<1");	}	int oldPush = this.getPushCount();	int oldPeek = this.getPeekCount();	int oldPop  = this.getPopCount();	int newPush = oldPush * factor;	int newPeek = oldPeek + (factor -1)*oldPop;	int newPop  = oldPop * factor;	FilterMatrix oldMatrix = this.getA();	FilterMatrix newMatrix = new FilterMatrix(newPeek, newPush);	// now, populate the new matrix with the appropriate copies of the old matrix	// (eg the As).	// copy over the first old matrix into the upper left hand corner	newMatrix.copyAt(0,0,oldMatrix);	for (int i=1; i<factor; i++) { // this many copies	    // each one is offset by oldPop in the vertical direction, and offset by oldPush in	    // the horizonytal direction.	    newMatrix.copyAt(oldPeek+(i-1)*oldPop, i*oldPush, oldMatrix);	}	// also, duplicate the b vector factor times	FilterVector oldVector = this.getb();	FilterVector newVector = new FilterVector(newPush);	for (int i=0; i<factor; i++) {	    for (int j=0; j<oldPush; j++) {		newVector.setElement((i*oldPush) +j,				oldVector.getElement(j));	    }	}	// create a new Linear rep for the expanded filter	LinearFilterRepresentation newRep;	newRep = new LinearFilterRepresentation(newMatrix, newVector, newPop);	return newRep;    }