buffer (signal)?

Sciss contact at sciss.de
Thu Apr 10 15:36:07 CDT 2008


the description is here:

http://www.mathworks.com/access/helpdesk/help/toolbox/signal/buffer.html

meanwhile i started to write something based on that doc. beware as  
i'm absolutely bad with matlab/octave syntax and i stopped to  
implement it when it did it's job (see below) ;-)


%%% begin buffer.m

function [y, z, opt] = buffer( x, n, p, opt )
disp( "WARNING: buffer is a quick hack, don't use for continuous  
buffering" );

if nargin < 3, p = 0; end;
L = length(x);
if p <= 0
	if nargin < 4, skip = 0; else skip = opt; end;
	pre = [];
	m = floor((L-skip)/(n-p)) + (rem((L-skip),(n-p)) >= n);
	z = zeros( (L-skip) - m*(n-p) );
else
	if nargin < 4, pre = zeros( p, 1 ); else pre = opt; end;
	skip = 0;
	if strcmp( pre, 'nodelay' )
		pre = 0;
		m = floor((L-n)/(n-p))+1;
		z = zeros( L - ((m-1)*(n-p)+n) );
	else
		m = floor(L/(n-p));
		z = zeros( L - m*(n-p) );
	end;
end;
y = zeros( n, m );
q = n * m;
y(1:length(pre))=pre;
i = length(pre);
j = skip;
while (i < q && j < L)
	nn = min( min( n, q - i ), L - j );
	y((i+1):(i+nn))=x((j+1):(j+nn));
	i = i + n;
	j = j + n - p;
endwhile

%%% end buffer.m


i used this with a very interesting tool from

http://cosmal.ucsd.edu/cal/projects/CATbox/catbox.htm

--> the ConstQ spectrum analysis tool. all i had to change is to  
comment out the line

progressbar(i/N);

in cqgram.m since it produces some errors with gnuplot. i get  
impressive results, like:

x = auload( '/Users/rutz/Desktop/SineSweep.wav' );
cqgram( x, 16384, 16384-256, 32, 22050, 24, 44100 );


ciao, -sciss-




Am 10.04.2008 um 22:25 schrieb Ben Abbott:
> On Thursday, April 10, 2008, at 12:59PM, "Sciss" <contact at sciss.de>  
> wrote:
>> hi,
>>
>> i am trying to run a function that was written for matlab. it breaks
>> because the function 'buffer' is missing, something that creates an
>> overlapped-chunk version of a vector. on octave-forge's documentation
>> site, it is stated:
>>
>> "buffer  [signal] -- not implemented"
>>
>> ... so i assume this function is missing? i installed the signal
>> package but no luck. any clues how i can get a 'buffer' function for
>> octave?
>>
>> thanks a lot! cheers, -sciss-
>>
>>
>
> From the most recent Matlab (7.6)
>
>>> which buffer
> 'buffer' not found.
>>>
>
> Apparently "buffer" is not a core Matlab function.
>
> By chance is the function you're looking for actually a class? ...  
> for example,
>
> http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do? 
> objectId=14087
>
> If not, can you tell us what "buffer" is supposed to do?
>
> Ben



More information about the Help-octave mailing list