-
Ramsha Narmeen authoredRamsha Narmeen authored
movement_PRWMM.m 2.93 KiB
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