function PosMS = movement_PRWMM(Number_MS,NoOfSteps,Step,Speed_max,Area_x,Area_y,PosMSinit) PosMS=zeros(NoOfSteps,2*Number_MS); Angle= zeros(1,Number_MS); Speed = zeros(1,Number_MS); state=zeros(2,Number_MS); for i=1:Number_MS Angle(1,i)=round(rand*359); Speed(1,i)=round(Speed_max*rand); end for StepNo=1:NoOfSteps if StepNo==1 for i=1:Number_MS PosMS(1,2*i-1) = PosMSinit(i,1); PosMS(1,2*i) = PosMSinit(i,2); end end if StepNo>1 for i=1:Number_MS if state(1,i)==0 a=rand; if a<=0.5 state(1,i)=1; else state(i,1)=2; end end if state(1,i)==1 a=rand; if a<=0.2 state(1,i)=0; else state(i,1)=1; end end if state(1,i)==2 a=rand; if a<=0.2 state(1,i)=0; else state(i,1)=2; end end if state(2,i)==0 a=rand; if a<=0.5 state(2,i)=1; else state(2,1)=2; end end if state(2,i)==1 a=rand; if a<=0.2 state(2,i)=0; else state(2,1)=1; end end if state(2,i)==2 a=rand; if a<=0.2 state(2,i)=0; else state(2,1)=2; end end if state(1,i)==0 deltaX=0; elseif state(1,i)==1 deltaX=-Step*Speed(1,i)*cos(Angle(1,i)); else deltaX=Step*Speed(1,i)*cos(Angle(1,i)); end if state(2,i)==0 deltaY=0; elseif state(2,i)==1 deltaY=-Step*Speed(1,i)*sin(Angle(1,i)); else deltaY=Step*Speed(1,i)*sin(Angle(1,i)); end PosMS(StepNo,2*i-1)=PosMS(StepNo-1,2*i-1)+deltaX; PosMS(StepNo,2*i)=PosMS(StepNo-1,2*i)+deltaY; if PosMS(StepNo,2*i-1)>Area_x PosMS(StepNo,2*i-1)=0; PosMS(StepNo,2*i)=Area_y-PosMS(StepNo-1,2*i); elseif PosMS(StepNo,2*i-1)<0 PosMS(StepNo,2*i-1)=Area_x; PosMS(StepNo,2*i)=Area_y-PosMS(StepNo-1,2*i); elseif PosMS(StepNo,2*i)>Area_y PosMS(StepNo,2*i-1)=Area_x-PosMS(StepNo-1,2*i-1); PosMS(StepNo,2*i)=0; elseif PosMS(StepNo,2*i)<0 PosMS(StepNo,2*i-1)=Area_x-PosMS(StepNo-1,2*i-1); PosMS(StepNo,2*i)=Area_y; end end end end