我目前正在尝试模拟随机游走。我们的想法是在0
和2*pi
之间选择一个随机数,然后让随机游走者走向那个方向。以下是我尝试模拟这种随机游走的方法:
before=[0 0]; %start in (0,0)
while 1
x=rand;
x=x*2*pi; %// choose random angle
increment=[cos(x),sin(x)] %// increments using the sine and cosine function
now=before+increment;
plot(before, now)
hold on
before=now;
pause(1);
end
我希望这个程序可以绘制线条,每个新线条都从上一行的结束点开始,但这不会发生。我不知道为什么它不起作用。
答案 0 :(得分:3)
您的plot
错误的语法是plot(X,Y)
。将通话更改为
plot([before(1), now(1)], [before(2), now(2)])
并且您的程序应该按预期工作。
答案 1 :(得分:1)
这是改进版,可以完成所有计算矢量化,并为您提供两种输出选择。第一个显示所有内容,非常快。第二个需要花费大量时间,具体取决于样本量。
pts = [0,0]; % starting point
N = 10000; % sample count
x = rand(N,1) * 2*pi; % random angle
% calculate increments and points
inc = [cos(x),sin(x)];
pts = [pts;cumsum(inc,1)];
% plot result at once
figure;
plot(pts(:,1),pts(:,2));
% plot results in time steps
figure; hold on;
for i = 1:size(pts,1)
plot(pts(i:i+1,1),pts(i:i+1,2))
pause(1)
end
以下是输出示例: