您的问题的解决方案非常简单。当你画线时,你需要至少有两个点才能画线。你真正需要做的是记住之前的位置,以便在每个时间步,你可以画一条从之前的位置到当前位置的线。
我要做的是首先生成一个生成一个跳跃的图形,我们可以从初始位置画一条线到这一点。之后,然后运行您的循环,我们跟踪上一个事件,在下一个时间步生成您的新事件,然后从上一个时间的上一个事件到当前时间的当前事件画一条线。
请记住,时间在水平轴上,位置在垂直轴上。因此,事件被保存为双元素向量,其中第一个元素是时间,第二个元素是位置。
因此,尝试这样做:
function plot_sim(a,numjumps,R)
%// Keep the previous event
%// x coordinate is time
%// y coordinate is position
%// Time = 0
prev_loc = [0 a];
%// Generate the next event
%// Time = 1
loc = [1 prev_loc(2) + 2*binornd(1,R)-1];
%// Close all figures then open up a new one
close all;
figure;
hold on;
%// Plot a line from the previous position to the current one
plot([prev_loc(1) loc(1)], [prev_loc(2) loc(2)]);
%// For each new position...
for i = 2:numjumps
%// Remember the previous position
prev_loc = loc;
%// Generate the next position
loc = [i prev_loc(2) + (2*binornd(1,R)-1)];
%// Plot the position
plot([prev_loc(1) loc(1)], [prev_loc(2) loc(2)]);
end
这是我尝试运行它时得到的结果plot_sim(0.25,10,0.25)
,所以a = 0.25, numjumps = 10, R = 0.25
:

请记住,您可能不会得到与我相同的情节,因为它是随机的。每次你运行这个函数时,你应该得到一个不同的随机游走,这就是我们所期望的。