How to create a unit wiener process

18 views (last 30 days)
vaggelis papasot
vaggelis papasot on 21 Aug 2017
Edited: A G on 19 Jan 2019
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 Comment
Torsten
Torsten on 21 Aug 2017
How do you calculate "variance" from the piece of code from above ?
Best wishes
Torsten.

Sign in to comment.

Answers (1)

A G
A G on 19 Jan 2019
Edited: A G on 19 Jan 2019
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)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!