function [perf, elapsedTime]=stDsPerfEval(ds, opt, showPlot) % Performance evaluation of ST (singing transcription) on a given dataset % % Usage: % perf=stDsPerfEval(ds, opt) % % Example: % load mir-st010.mat % load dataset % opt=stDsPredict('defaultOpt'); % [ds2, time]=stDsPredict(ds, opt, 1); % opt2=stDsPerfEval('defaultOpt'); % perf=stDsPerfEval(ds2, opt2, 1) % fprintf('Elapsed time = %g sec\n', time); if nargin<1, selfdemo; return; end if ischar(ds) && strcmpi(ds, 'defaultOpt') % Set the default options perf=pv2note('defaultOpt'); return end if nargin<2||isempty(opt), opt=feval(mfilename, 'defaultOpt'); end if nargin<3, showPlot=0; end myTic=tic; dsCount=length(ds); for i=1:dsCount ds(i).fMeasure=noteVecSim(ds(i).notePredicted, ds(i).noteGt); % Compute the performance in F-measure % fprintf('%d/%d: file=%s, f-measure=%g\n', i, dsCount, ds(i).gtFile, ds(i).fMeasure); end perf=mean([ds.fMeasure]); % Average of F-measure elapsedTime=toc(myTic); % Elapsed time if showPlot bar([ds.songId], [ds.fMeasure]); xlabel('Song ID'); ylabel('f-measure'); title(sprintf('Average f-measure=%g', perf)); end % ====== Self demo function selfdemo mObj=mFileParse(which(mfilename)); strEval(mObj.example);