-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrandomWalkFixStep.m
More file actions
61 lines (52 loc) · 2.02 KB
/
randomWalkFixStep.m
File metadata and controls
61 lines (52 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
function out = randomWalkFixStep(nStep,varargin)
% RANDOMWALKFIXSTEP Generador de caminatas con paso de longitud constante.
% W = RANDOMWALKFIXSTEP(N) caminata de N pasos en dos dimensiones. Con
% pasos de longitud 1
% W = RANDOMWALKFIXSTEP( _ ,'StepLength',L) donde la longitud de los pasos
% es L.
% W = RANDOMWALKFIXSTEP( _ ,'Drift',V) donde V es el vector de deriva o el
% valor medio de los pasos.
% W = RANDOMWALKFIXSTEP( _ ,'Dimension',DIM) caminata en DIM dimensiones
% Todas las caminatas parten del origen (0,..,0), por lo que W tiene longitud N+1
% donde N es el numero de pasos
%Default dimension
nDimension = 2;
lengthStep = 1;
meanStep = zeros(1,nDimension);
if numel(varargin) > 0
for i=1:numel(nargin)
if ischar(varargin{i})
switch varargin{i}
case 'Dimension'
nDimension = varargin{i+1};
meanStep = zeros(1,nDimension);
continue
case 'StepLength'
lengthStep = varargin{i+1};
continue
case 'Drift'
meanStep = varargin{i+1};
nDimension = length(meanStep);
continue
otherwise
error('Parametro no valido')
end%switch
end%if char
end%for
end%if
if nDimension == 2
randomAngle = 2*pi*rand(nStep,1);
randomStep = lengthStep*[cos(randomAngle) sin(randomAngle)] ;
%Agrego el drift si lo hubiese
randomStep = randomStep + meanStep(ones(nStep,1),:);
out =[zeros(1,nDimension); cumsum(randomStep)];
else
randomStep = 2*rand(nStep,nDimension)-1;
normStep = sqrt(sum(randomStep.^2,2));
%Normalizo los pasos
randomStep = randomStep./normStep(:,ones(nDimension,1));
%Agrego el drift si lo hubiese
randomStep = randomStep + meanStep(ones(nStep,1),:);
%Genero la caminata
out =[zeros(1,nDimension); cumsum(randomStep)];
end %nDimension