daniele@166: function s = unbuffer(obj) daniele@166: daniele@166: %% Check inputs and Defaults daniele@166: if ~isprop(obj,'bufferOperator') || isempty(obj.bufferOperator) daniele@166: error('You must buffer a signal before unbuffer it, come on!'); daniele@166: end daniele@166: daniele@166: switch lower(obj.bufferOperator.method) daniele@166: %Unbuffer using overlap-add method daniele@166: case 'standard' daniele@166: w = obj.bufferOperator.window(obj.bufferOperator.wLength); daniele@166: S = diag(1./w)*obj.S; daniele@166: %Non overlapping case daniele@166: if obj.bufferOperator.overlap == 0 daniele@166: s = S(:); daniele@166: %Overlapping case daniele@166: else daniele@166: Stemp = S(1:obj.bufferOperator.wLength-obj.bufferOperator.overlap,1:end); daniele@166: s = [Stemp(:); S(obj.bufferOperator.wLength-obj.bufferOperator.overlap+1:end,end)]; daniele@166: end daniele@166: %Unbuffer using inverse lot with identity local transform daniele@166: case 'lot' daniele@166: s = ilot(obj.S(:),obj.bufferOperator.wLength,'id',... daniele@166: obj.bufferOperator.overlap,obj.bufferOperator.window); daniele@166: otherwise daniele@166: error('Please specify a valid buffer method'); daniele@166: end