view mt_get_transmat_at.m @ 2:cfdca07197b6

FIX: calibration message was bad.
author samer
date Thu, 02 Feb 2012 03:12:22 +0000
parents be936975f254
children ffd7efa3e5c0
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,I]=mt_get_transmat_at(Sys,Id,K,X,Y)
	normpos = Sys.map([X;Y])';
	target = normpos *log(K);
	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);
end