在循环中的点之间绘制线条出错

时间:2015-06-24 11:55:04

标签: matlab

我目前正在尝试模拟随机游走。我们的想法是在02*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

我希望这个程序可以绘制线条,每个新线条都从上一行的结束点开始,但这不会发生。我不知道为什么它不起作用。

2 个答案:

答案 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

以下是输出示例: all at once