Matlab仿真错误

时间:2017-02-18 22:03:49

标签: matlab stochastic-process

我是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)

2 个答案:

答案 0 :(得分:0)

你忘了索引

Z(k)=lambda*W(k).^2-N(k)

一定是

.mode ascii
SELECT * FROM tablename;

答案 1 :(得分: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)

结果示例:

wiener