No BSD License
function [HorAlign]=horalign(x,y,stol) % function [HorAlign]=horalign(x,y,stol) % % optimize Horizontal Alignment % by check for identical points % % 05.05.04 M.Penzkofer % check for partners indC = []; for i = 1:length(x) xG = x(i); yG = y(i); xI = ones(size(x))*xG; yI = ones(size(y))*yG; dsG = sqrt((xI(:,1)-x).^2+(yI(:,1)-y).^2); dsG(dsG==0) = NaN; smin = min(dsG); indK = find(dsG==smin); if (isempty(indK) == 0 & smin <= stol) indC = [indC; i indK(1)]; end end if (isempty(indC) == 1) % all align right HorAlign = ones(size(x)); else % align by partner HorAlign = zeros(size(x)); for i = 1:length(x) [indi,indj] = find(indC == i); if (isempty(indi) == 1) % align right HorAlign(i) = 1; else % partner index ind1 = find(indj == 1); indP = indC(indi(ind1(1)),2); if (HorAlign(i) == 0 & HorAlign(indP) == 0) if (x(i) < x(indP)) % align left and partner right HorAlign(i) = -1; HorAlign(indP) = 1; else % align right and partner left HorAlign(i) = 1; HorAlign(indP) = -1; end elseif (HorAlign(i) ~= 0 & HorAlign(indP) == 0) % align partner different HorAlign(indP) = -1*HorAlign(i); elseif (HorAlign(i) == 0 & HorAlign(indP) ~= 0) % align different HorAlign(i) = -1*HorAlign(indP); end end end end
Contact us at files@mathworks.com