Mercurial > hg > camir-aes2014
view core/magnatagatune/genre_stats.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 out = genre_stats(tagged, names, freqs, childof) % out = genre_stats(names, freqs, childof) % % calculates statistics for genre distributions % % % get overall genre frequency and sort accordingly allapp = sum(freqs,2); allapp = allapp/max(allapp); [null, idx] = sort(allapp,'descend'); % get root potential rootpot = 1 - sum(childof,2); figure; bar(1:numel(names),[allapp(idx) rootpot(idx)]) set(gca,'XTick',1:numel(names)); set(gca,'XTickLabel',names(idx)); legend('#appearances','root genre possibility'); title 'genre statistics sorted by frequency of appearances' % --- % determine genres that include x% of the whole dataset % --- pctl = 0.98; % 80 percent included % --- % re-sort by appearance and root potential. % using the multiplication, we can filter out subgenres % --- [null, idxrt] = sort(rootpot.*allapp,'descend'); % iteratively add 'best' genre according to root potential gotclips = []; numclips = []; num_included = 0; i = 1; while i <= numel(names) && num_included < pctl * length(tagged) % count clips found for this genre fprintf('%s \n', char(names{idxrt(i)})); newclips = setdiff(find(tagged(:,idxrt(i)))', gotclips); gotclips = [gotclips newclips]; numclips(i) = numel(newclips); num_included = num_included + numclips(i); i = i + 1; end figure; pie(numclips(numclips > 0) / length(tagged)); legend(names{idxrt(numclips > 0)}); out = [];