我是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)
答案 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)
结果示例: