Code covered by the BSD License  

Highlights from
TP Tool

from TP Tool by P. Baranyi, Z. Petres, Sz. Nagy
MATLAB Toolbox providing the functions for TP Model Transformation based Control Design

rnoino(U0)
% RNOINO - mtrix felbonts az RNO s INO felttelek szerint
%
% [IP,BASE]=RNOINO(U)
% 
% Az U mtrix nxr-es, n>r s SN, azaz a sorok sszege
% 1 kell legyen;
% 
% A kimenet az nxr-es IP s az rxr-es BASE mtrix, ahol
% a BASE SN, 
% az IP pedig SN  (sorok sszege 1), 
%             NN  (nemnegatv elemu) 
%             INO (minden oszlop legkisebb eleme 0)
%          s RNO (minden oszlop legnagyobb eleme azonos,0 s 1 kztti)
% 
% tovbb U=IP*BASE
function [U,fi] = rnoino(U0)

U=U0;
[n,r]=size(U0);

for i=r-1:-1:2
    vet(:,i)=U(:,i+1);%a pontok tavolsaga a levetitettektol
    U=U(:,1:i);
    U=U+vet(:,i)*ones(1,i)/i; %vetites az x1+..+x(i-1)=1 sikra
end



for i=2:r-1
    
    U=U-vet(:,i)*ones(1,i)/i;
    U=[U 1-sum(U')'];
	a=[0 1]; 
	while rnodiff(U,a(2))<0  %a megoldas keresesi tartomanya
        a(2)=a(2)*2;
	end
	d=[rnodiff(U,a(1)),rnodiff(U,a(2))];
	while abs(d(1))+abs(d(2))>10^(-6) %kereses oroszlanfogassal(intervallumfelezes)
	    auj=sum(a)/2;
	    if rnodiff(U,auj)>0
	        a(2)=auj;
        else
	        a(1)=auj;
        end
	    d=[rnodiff(U,a(1)),rnodiff(U,a(2))];
    end     %a vegen auj adja a megfelelo parametererteket
	
    
	U00=U(:,1:(size(U,2)-1));
	s=sum(U00')';
	U1=U00+(auj-1)/i*s*ones(1,i);
	U2=U1-ones(n,1)*min(U1);
	U25=ones(n,1)*max(U2);
	U3=U2./U25;
	U4=U3./max(sum(U3'));
	U=[U4 1-sum(U4')'];   
end
fi=inv(U(1:r,:))*U0(1:r,:);

Contact us at files@mathworks.com