function [S,R,QF] = eval_fprint(Q,SR,T,DUR,SNR) % [S,R,QF] = eval_fprint(Q,SR,T,DUR,SNR) % Evaluate the fingerprinting system over a set of queries. % Q is a cell array of query waveforms, each at sampling rate % SR. T is the ground-truth track indices that should be % returned (0 => not found). Return S as the proportion of % queries correctly identified. R is a matrix of actual % top-hit results, with 4 columns: track_id nmatch t_offs total_match, % as returned by match_query. % QF returns the actual truncated & noised queries from Q. % DUR truncates all queries to this many seconds (default all). % SNR adds noise at this SNR (in dB) relative to query (default 60). % 2010-04-21 DAn Ellis dpwe@ee.columbia.edu if nargin < 4; DUR = 999; end if nargin < 5; SNR = 60; end nq = length(Q); s = 0; maxdursamps = round(DUR*SR); for i = 1:nq dd = Q{i}; if length(dd) > maxdursamps dd = dd(1:maxdursamps); end % figure noise level given actual energy noise = ( (10^(-SNR/20))*sqrt(mean(dd.^2)) )*randn(length(dd),1); dd = dd + noise; r = match_query(dd,SR); R(i,:) = r(1,:); QF{i} = dd; end if nargin > 2 S = mean(R(:,1)==T'); else S = 0; end