annotate mt_get_transmat_at.m @ 18:062d46712995 tip

Moved mc_global_info1 back to public folder
author samer
date Mon, 02 Apr 2012 21:50:43 +0100
parents a6d5597bd922
children
rev   line source
samer@4 1 % mt_get_transmat_at - Get transition matrix nearest given point in information space.
samer@0 2 %
samer@0 3 % mt_get_transmat_at ::
samer@0 4 % mt_system ~'Melody Triangle system structure',
samer@0 5 % natural ~'voice Id (1 or greater)',
samer@0 6 % K:natural ~'size of transition matrix',
samer@0 7 % real ~'X-coordinate',
samer@0 8 % real ~'Y-coordinate'
samer@0 9 % -> [[K,K]] ~'transition matrix',
samer@0 10 % [[1,3]] ~'information coordinates'.
samer@0 11 %
samer@0 12 % The selected transition matrix will be shown using mt_show_transmat,
samer@0 13
samer@3 14 function [T,P,I]=mt_get_transmat_at(Sys,Id,K,X,Y)
samer@3 15 logK=log(K);
samer@0 16 normpos = Sys.map([X;Y])';
samer@3 17 target = normpos*logK;
samer@0 18 tmats = Sys.transmats{K};
samer@0 19 info = Sys.info{K};
samer@0 20 L = size(info,1);
samer@0 21
samer@0 22 % distance from target
samer@0 23 d2 = sum((info(:,1:2) - repmat(target,L,1)).^2,2);
samer@5 24 M = find(d2==min(d2));
samer@15 25 J = M(randnat(length(M)));
samer@0 26 T = tmats(:,:,J);
samer@0 27 I = info(J,:);
samer@9 28 if Sys.shuffle
samer@9 29 perm=randperm(K);
samer@9 30 T=T(perm,perm);
samer@9 31 end
samer@3 32 mt_show_transmat(Id,T,I);
samer@3 33 if nargin>1, P=Sys.revmap(I(1:2)'/logK); end
samer@0 34 end