MATLAB: Matlab multiplication of two matrices in max-plus algebra max-plus algebra In max-plus algebra x+y=max(x,y)x*y=x+y where x , y denote the entries. How two multiply two matrices in MATLAB such that addition implies maximum value and multiplication imply sum . Thanks Best Answer TotalStation=13;Part=20;FST=3;c=0;PST=10;BST=11;NBuf=10;AT=zeros(TotalStation,FST);AU=sym('AU%d%d',[TotalStation,1]);BU=zeros(TotalStation,1);BufU=sym('AU%d%d',[TotalStation,1]);Uk=zeros(FST,Part);Uk1=zeros(FST,1);IST=zeros(FST,Part);Y=sym('Y%d%d',[TotalStation,Part+NBuf]);Y1=sym('Y1%d%d',[TotalStation,1]);for k=1 : Partif k==1%first partY(BST,1)=0;Y1(BST,1)=T(BST,1);for i=BST+1 : TotalStationY(i,1)=Y1(i-1,1);Y1(i,1)=Y1(i-1,1)+T(i,1);endfor i=1 : BST-1Y(i,1)=0;Y1(i,1)=0;endY;Y1;for i=BST : TotalStationY1(i,1)=Y(i,1);endY1;else%second part until last part of bufferif k <= NBuf && k >1k;Y1;BufU(BST,1)=Y1(BST,1)+T(BST);for j=BST+1 : size(Buf,1)c=max(BufU(j-1,1)+T(j-1),T(j,1)+Y1(j ,1));BufU(j,1)=c;endBufU;for i=1 : BST-1BufU(i,1)=0;endfor i=1 : size(B,1)Y(i,k)=BufU(i,1);endBufU;for i=1 : size(B,1)Y1(i,1)=Y(i,k);endY;Y1;elseif k==NBuf+1for i=1 : FSTUk1(i,1)=Uk(i,1);endfor i=1 : size(B,1)for j=1 : size(Uk1,2)c=B(i,1)+Uk1(1,j);for v=1 : size(B,2)c=max(c,B(i,v)+Uk1(v,j));endBU(i,j)=c;endend%make BU(i,k) to BU(i,k-NBuf) to fix the dimensions and startfrom%1%for i=1 : size(B,1)%Y(i,k)=BU(i,k-NBuf);%endfor i=1:BST-1Y(i,k)=BU(i,1);endY(BST,k)=max(Y1(BST+1,1),BU(BST,k-NBuf))for i=BST+1 : size(B,1)Y(i-1,k)+T(i-1,1);Y1(i,1);BU(i,k-NBuf);Y(i,k)=max(Y1(i,1),max(Y(i-1,k)+T(i-1,1),BU(i,k-NBuf)))endfor i=1 : FSTIST(i,k-NBuf)=Uk1(i,k-NBuf);endelsefor i=1 : size(B,1)Y1(i,1)=Y(i,k-1);endY1for i=1 : size(A,1)for j=1 : size(Y1,2)c=A(i,1)+Y1(1,j);for v=1 : size(A,2)c=max(c,A(i,v)+Y1(v,j));endAU(i,j)=c;endendAU;for i=1 : FSTUk(i,k-NBuf)=IST(i,k-NBuf-1)+T(i,1);endUk;for i=1 : FSTUk1(i,1)=Uk(i,k-NBuf);endUk1;for i=1 : size(B,1)for j=1 : size(Uk1,2)c=B(i,1)+Uk1(1,j);for v=1 : size(B,2)c=max(c,B(i,v)+Uk1(v,j));endBU(i,j)=c;endendif k > NBuf+1for i=1 : size(A,1)for j=1 : size(Y1,2)c=Buf(i,1)+Y1(1,j);for v=1 : size(A,2)c=max(c,Buf(i,v)+Y1(v,j));endBufU(i,j)=c;endendBufUendfor i=1 : size(AU,1)for j=1 : size(AU,2)% if k > NBuf+1%AT(i,j)=max(BufU(i,j),max(AU(i,j),BU(i,j)));%elseAT(i,j)=max(AU(i,j),BU(i,j));%endendendAT;for i=1 : size(B,1)Y(i,k)=AT(i,1);endendendendYend
Best Answer