Mercurial > hg > camir-aes2014
view core/magnatagatune/ranking_from_comparison_trivial.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line source
function [r, valididx, clip_ids] = ranking_from_comparison_trivial(comparison, comparison_ids) % returns a ranking for each of the compared songs % % r(idx,1) = all indexes which are similar to clip idx % r(idx,2) = all indexes which are dissimilar to clip idx % % if onlyvalid is set to true, only the transitive hull of % clips having sim and dissim values will be output % --- % in comparison, the outlying piece is highlighted. % thus, we naively consider that % a. both of the remaining pieces are more similar to each other. % b. the outlier is dissimilar to both of the other pieces % --- [outsort, outidx] = sort(comparison(:,4:6),2,'ascend'); r = cell(numel(comparison_ids), 2); s = zeros(numel(comparison_ids), 2); % score for rankings for i = 1:size(comparison, 1) % get the three relevant comparison ids pos = comparison(i, outidx(i,1:3)); vals = outsort(i,:); % --- % each of the three clips will be evaluated based on its position % the last clip is the potential outlyier % --- % --- % usual case: two small values and a last outlie % --- if vals(2) ~= vals(3) % --- % first (most common) clip: % the second clip is more similar than the third one % --- r{pos(1),1} = cat(1, r{pos(1),1}, pos(2)); % similar r{pos(1),2} = cat(1, r{pos(1),2}, pos(3)); % dissimilar % else % % % ok, both seem more dissimilar to clip 1 % r{pos(1),2} = cat(1, r{pos(1),1}, pos(2)); % both dissimilar % r{pos(1),2} = cat (1, r{pos(1),2}, pos(3)); % dissimilar end if vals(3) ~= vals(1) % --- % the second clip is more similar to the first than % the third % --- r{pos(2),1} = cat(1, r{pos(2),1}, pos(1)); r{pos(2),2} = cat(1, r{pos(2),2}, pos(3)); % --- % the third clip is not similar to any of the former % NOTE: we avoid this information as it possibly leads % to some contradictionary statements % --- r{pos(3),2} = cat(1, r{pos(3),2}, pos(1)); r{pos(3),2} = cat(1, r{pos(3),2}, pos(2)); end end % --- % we cleanup r and % run basic checks on emptiness and paradox assumptions % --- valididx = zeros(size(r,1), 1); for i = 1:size(r, 1) % make unique r{i,1} = unique(r{i,1}); r{i,2} = unique(r{i,2}); % check valididx(i) = ~isempty(r{i,1}) && ~isempty(r{i,2}) && ... isempty(intersect(r{i,1}, r{i,2})); end valididx = logical(valididx); clip_ids = 1:numel(comparison_ids);