Mercurial > hg > trimatlab
view mt_get_transmat_at.m @ 3:ffd7efa3e5c0
Added reverse map from information space to triangle; moved info coors to transmat window.
author | samer |
---|---|
date | Fri, 03 Feb 2012 18:08:07 +0000 |
parents | be936975f254 |
children | 931e71c24aa3 |
line wrap: on
line source
% mt_get_transmat_at - Get transition matrix near given point in information space. % % mt_get_transmat_at :: % mt_system ~'Melody Triangle system structure', % natural ~'voice Id (1 or greater)', % K:natural ~'size of transition matrix', % real ~'X-coordinate', % real ~'Y-coordinate' % -> [[K,K]] ~'transition matrix', % [[1,3]] ~'information coordinates'. % % The selected transition matrix will be shown using mt_show_transmat, % and it's information coordinates printed in the title of the main scatter plot. function [T,P,I]=mt_get_transmat_at(Sys,Id,K,X,Y) logK=log(K); normpos = Sys.map([X;Y])'; target = normpos*logK; tmats = Sys.transmats{K}; info = Sys.info{K}; L = size(info,1); % distance from target d2 = sum((info(:,1:2) - repmat(target,L,1)).^2,2); Mask = d2<=max(min(d2)*2,0.01); M = find(Mask); % J = M(argmax(info(M,3))); J = M(1+floor(length(M)*rand)); T = tmats(:,:,J); I = info(J,:); %Mask=2*int16(Mask); Mask(J)=1; %set(Sys.hScat{K},'CDATA',Mask); % scatc(info,Mask,16); rotate3d on; %figure(Sys.fig); title(sprintf('info: %.2f, %.2f, %.2f',I(1),I(2),I(3))); %figure(50); title(sprintf('pos: %.2f, %.2f',normpos(1), normpos(2))); %fprintf('normpos: %.2f, %.2f',normpos(1), normpos(2)); mt_show_transmat(Id,T,I); if nargin>1, P=Sys.revmap(I(1:2)'/logK); end end