2

私はMatlabがまったく初めてです。ウィーナーとポアソンを組み合わせたプロセスをシミュレートしようとしています。

添え字の代入次元の不一致が発生するのはなぜですか?

シミュレートしようとしています

Z(t)=lambda*W^2(t)-N(t)

はウィーナーW過程で、Nはポアソン過程です。

私が使用しているコードは以下のとおりです。

T=500
dt=1
K=T/dt
W(1)=0
lambda=3
t=0:dt:T
for k=1:K
r=randn
W(k+1)=W(k)+sqrt(dt)*r
N=poissrnd(lambda*dt,1,k)
Z(k)=lambda*W.^2-N
end
plot(t,Z)
4

2 に答える 2

0

一部のインデックスが欠落しているのは事実ですが、コードをより「Matlab の方法」で書き直すことでメリットが得られると思います。次のコードは、Matlab の基本変数が行列であるという事実を使用しており、ベクトル化された方法で結果を計算しています。この種の書き方を理解するように努めてください。これは、Matlab をより効率的に活用する方法であり、短くて読みやすいコードを書くことでもあります。

T = 500;
dt = 1;
K = T/dt;
lambda = 3;
t = 1:dt:T;
sqdtr = sqrt(dt)*randn(K-1,1); % define sqrt(dt)*r as a vector
N = poissrnd(lambda*dt,K,1); % define N as a vector
W = cumsum([0; sqdtr],1); % cumulative sum instead of the loop
Z = lambda*W.^2-N; % summing the processes element-wiesly
plot(t,Z)

結果の例:

ウインナー

于 2017-02-19T09:34:28.363 に答える