使用matlab绘制演化博弈灵敏性分析的三维图,我的思路是通过for循环的形式创建高度矩阵Z
for i=1:99
for j=1:60
a=0.01*i,b=0.88,o=0.69,v=1.1,c2=5,c3=15,t2=10,e1=10,e2=10,e3=10,j=1,d=1,w=5,q1=0.5,q2=0.8,f=5,h=9,r1=4.5;
[t,y]=ode45(@(t,y)czc1(y,t,c2,c3,t2,e1,e2,e3,d,j,w,f,h,r1,a,b,v,o,q1,q2),[0 6],[0.2 0.5 0.8]);
Z(i,j)=y(j,1);
end
end
运算得到的y为97x3的矩阵,希望通过for循环的形式将a=0.01时y第一列的前60个元素放入矩阵Z的第一行,a=0.02时放入Z的第二行,直至a增加至0.99,得到99行6列的矩阵Z
问题在于得到的矩阵Z为99行1列
function dydt=czc(y,t,c2,c3,t2,e1,e2,e3,d,j,w,f,h,r1,a,b,v,o,q1,q2)
dydt=zeros(3,1);
dydt(1)=2*(y(1)*(1-y(1))*(y(2)*(-q1^(o)*v*f^(b)/(q1^(o)+(1-q1)^o)^(1/o)-q1^(o)*v*h^(b)/(q1^(o)+(1-q1)^o)^(1/o)+v*h^(b))+y(3)*(-q2^(o)*v*f^(b)/(q2^(o)+(1-q2)^o)^(1/o)-q2^(o)*v*h^(b)/(q2^(o)+(1-q2)^o)^(1/o)+v*h^(b))+y(2)*y(3)*(-v*f^(b)+q1^(o)*v*f^(b)/(q1^(o)+(1-q1)^o)^(1/o)+q2^(o)*v*f^(b)/(q2^(o)+(1-q2)^o)^(1/o)+q1^(o)*v*h^(b)/(q1^(o)+(1-q1)^o)^(1/o)+q2^(o)*v*h^(b)/(q2^(o)+(1-q2)^o)^(1/o)+v*h^(b))+r1-v*h^(b)));
dydt(2)=0.2*(y(2)*(1-y(2))*(y(1)*q1^(o)*w^(a)/(q1^(o)+(1-q1)^o)^(1/o)-y(1)*y(3)*q1^(o)*w^(a)/(q1^(o)+(1-q1)^o)^(1/o)-c2+t2-e1+e2+j));
dydt(3)=0.4*(y(3)*(1-y(3))*(y(1)*q2^(o)*f^(a)/(q2^(o)+(1-q2)^o)^(1/o)+y(2)*e3+y(1)*y(2)*(f^(a)-q1^(o)*f^(a)/(q1^(o)+(1-q1)^o)^(1/o)-q2^(o)*f^(a)/(q2^(o)+(1-q2)^o)^(1/o)+q1^(o)*v*w^(b)/(q1^(o)+(1-q1)^o)^(1/o))-c3-e3+d));
end
辛苦了,请帮忙解答(提出其他思路也可以),谢谢
你好,可以设置一个元胞矩阵来装这些东西
Z = cell(99,60);
for i=1:99
for j=1:60
a=0.01*i,b=0.88,o=0.69,v=1.1,c2=5,c3=15,t2=10,e1=10,e2=10,e3=10,j=1,d=1,w=5,q1=0.5,q2=0.8,f=5,h=9,r1=4.5;
[t,y]=ode45(@(t,y)czc1(y,t,c2,c3,t2,e1,e2,e3,d,j,w,f,h,r1,a,b,v,o,q1,q2),[0 6],[0.2 0.5 0.8]);
Z{i,j}=y(j,1);
end
end