Mercurial > hg > smallbox
comparison util/classes/@audio/unbuffer.m @ 166:1495bdfa13e9 danieleb
Updated grassmanian function (restored old computation of the dictionary) and added functions to the audio class
| author | Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk> |
|---|---|
| date | Mon, 19 Sep 2011 14:53:23 +0100 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 162:88578ec2f94a | 166:1495bdfa13e9 |
|---|---|
| 1 function s = unbuffer(obj) | |
| 2 | |
| 3 %% Check inputs and Defaults | |
| 4 if ~isprop(obj,'bufferOperator') || isempty(obj.bufferOperator) | |
| 5 error('You must buffer a signal before unbuffer it, come on!'); | |
| 6 end | |
| 7 | |
| 8 switch lower(obj.bufferOperator.method) | |
| 9 %Unbuffer using overlap-add method | |
| 10 case 'standard' | |
| 11 w = obj.bufferOperator.window(obj.bufferOperator.wLength); | |
| 12 S = diag(1./w)*obj.S; | |
| 13 %Non overlapping case | |
| 14 if obj.bufferOperator.overlap == 0 | |
| 15 s = S(:); | |
| 16 %Overlapping case | |
| 17 else | |
| 18 Stemp = S(1:obj.bufferOperator.wLength-obj.bufferOperator.overlap,1:end); | |
| 19 s = [Stemp(:); S(obj.bufferOperator.wLength-obj.bufferOperator.overlap+1:end,end)]; | |
| 20 end | |
| 21 %Unbuffer using inverse lot with identity local transform | |
| 22 case 'lot' | |
| 23 s = ilot(obj.S(:),obj.bufferOperator.wLength,'id',... | |
| 24 obj.bufferOperator.overlap,obj.bufferOperator.window); | |
| 25 otherwise | |
| 26 error('Please specify a valid buffer method'); | |
| 27 end |
