Mercurial > hg > smallbox
diff util/classes/tests/test_buffer.m @ 182:f8bc99a5470c danieleb
Added test for audio buffer function
author | Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk> |
---|---|
date | Mon, 09 Jan 2012 12:58:00 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/util/classes/tests/test_buffer.m Mon Jan 09 12:58:00 2012 +0000 @@ -0,0 +1,48 @@ +%% Buffer Test +% Test script for the function audio->buffer which takes an audio object as +% an input and buffers it into frames. The test assesses wether all the +% possible buffer methods are invertible. +%% + +N = 500; % number of audio samples +TOL = 200; % tolerance (in decibels) +verb = true; % verbose + +obj = audio(randn(N,1)); % audio object +% wLengts: one window, two windows, maximum number of windows +temp = factor(N); +wLengths = [N; fix(N/2); fix(N/temp(end))]; +% overlaps: zero, half window, max +overlapNames = {'zero','half-window','maximum'}; +overlaps = {@(n)0, @(n)n/2, @(n)n-1}; +% windows: valid windows +windows = {@hanning,@hamming,@triang,@rectwin}; +% methods: valid methods +methods = {'standard'}; + + +nLen = length(wLengths); +nOver = length(overlaps); +nWin = length(windows); +nMet = length(methods); +count = 1; +for iLen=1:nLen + for iOver=1:nOver + for iWin=1:nWin + for iMet=1:nMet + if verb + printf('\n buffer test %d/%d - %d window length, %s overlap, %s window and %s method ... ',... + count,nMet*nWin*nOver*nLen,wLengths(iLen),overlapNames{iOver},func2str(windows{iWin}),methods{iMet}); + end + obj = buffer(obj,wLengths(iLen),overlaps{iOver}(wLengths(iLen)),windows{iWin},methods{iMet}); + s_rec = obj.unbuffer; + if snr(obj.s,s_rec) > TOL + if verb, printf('Passed'); end + else + error('Test failed!'); + end + count = count+1; + end + end + end +end