How to create a unit wiener process

I want to create a wiener process with mean = 0, and variance 1. I wrote the following script and get mean values close to zero but the variance is much smaller than 1. What can i do?
T = 1; N = 500;
dt = T/N;
dW = zeros(1,N); % preallocate arrays ...
W = zeros(1,N); % for efficiency
dW(1) = sqrt(dt)*randn; % first approximation outside the loop ...
W(1) = dW(1); % since W(0) = 0 is not allowed
for j = 2:N
dW(j) = sqrt(dt)*randn; % general increment
W(j) = W(j-1) + dW(j);
end

1 件のコメント

Torsten
Torsten 2017 年 8 月 21 日
How do you calculate "variance" from the piece of code from above ?
Best wishes
Torsten.

サインインしてコメントする。

回答 (1 件)

A G
A G 2019 年 1 月 19 日
編集済み: A G 2019 年 1 月 19 日

0 投票

That may be because You have to few points (only 500). Try with 1e6 for ex.
clearvars;
x(1)=0;
for i=1:1e6
dx(i)=2*randn()+0.1;
x(i+1)=x(i)+dx(i);
end
%%
plot(x)
mean(x)
var(x)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2017 年 8 月 21 日

編集済み:

A G
2019 年 1 月 19 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by