0

Octaveで完全に機能するここで見つけることができる 2 次元のランダム ウォークがあります。しかし、一次元のランダムウォークのプログラムを書こうとすると、エラーが発生しました。プログラムは次のとおりです。

t=[];
x=[];
for i=1:100000
    J=rand;
    if J<0.5
        x(i+1)=x(i)+1;
        t(i+1)=t(i)+1;
    else
        x(i+1)=x(i)-1;
        t(i+1)=t(i)+1;
    end
end

plot(t,x)

エラーは次のとおりです。

エラー: A(I): インデックスが範囲外です。範囲外の値 1 0

ありがとうございました。

4

4 に答える 4

1

したがって、t と x は空であるため、x(i+1) と x(i) を介してそれらにインデックスを付けることはできません。x と t をすべてゼロで初期化する必要があると思います。

于 2015-01-22T21:22:25.480 に答える
1

最初の反復ではi = 1、はゼロの次元x(2) = x(1) +or- 1を持ちます。通常は原点であるとxの開始点を定義する必要があります。コードを少し変更することもできます。xt

x = 0;
N = 100000;
t = 0 : N;
for i = 1 : N
    x(i+1) = x(i) + 2 * round(rand) - 1;
end
plot(t,x)
于 2015-01-22T21:39:59.870 に答える