数据必须是单个矩阵Y或对X,Y的列表

时间:2017-06-13 08:47:00

标签: matlab plot ode

我想让两个线条图Ckkk和Ckk出现在同一个图上。上述错误不断发生。我已经检查了类似的问题,并没有任何修复有帮助。

代码如下

 function cancer()
 clear all;
 clc;
 t0=0;tend=60;nt=tend;
 dt=(tend-t0)/(nt-1);
 t=t0:dt:tend;
 mambda=0.75;nambda=0.50;lambda=0.25;phi=0.0;psi=0.0;

 %nu cell kill strength
 %nu=zeros(length(t));
 %inu= find(t>=40);
 %nu(inu)=0.12;

 %mu cell kill strength
 %mu=zeros(length(t));
 %inu = t>=40;
 %mu(inu)=0.22;

 %lu cell kill strength
 %lu=zeros(length(t));
 %inu= t>=40;
 %lu(inu)=0.32;



C(1)=100;Ca=100;Cb=100;Ct=100;
Ctt=100;Cttt=100;Cx=100;Ckk=100;Ck=100;Ckkk=100;K(1)=300; 

for i=1:length(t)-1
    %Equation ?c
    Cx(i+1)=Cx(i)+dt*(lambda*Cx(i));

    %Equation ?c(1-c/K)with different  ? values.
    Ck(i+1)=Ck(i)+dt*(lambda*Ck(i)*(1-(Ck(i)/K(i))));
    Ckk(i+1)=Ckk(i)+dt*(nambda*Ckk(i)*(1-(Ckk(i)/K(i))));
    Ckkk(i+1)=Ckkk(i)+dt*(mambda*Ckkk(i)*(1-(Ckkk(i)/K(i))));

    %Gompertz Growth Equations with different  ? values.
    C(i+1)=C(i)+dt*(-lambda*C(i)*log(C(i)/K(i)));


    %Anti-tumor treatment induces a tumor cell kill with strength 0?nu?1.
    %Ct(i+1)=Ct(i)+dt*(-lambda*Ct(i)*log(Ct(i)./K(i)))-nu(i).*Ct(i);


    %Anti-angiogenic treatment 
    K(i+1)=K(i)+dt*(phi*C(i)-psi*K(i).*((C(i)).^(2/3)));

当我调用绘图功能时,绘图上出现错误

plot(Ckkk,'b',Ckk,'r');
xlabel('Time In Days')
ylabel('Number of Cells')
end

1 个答案:

答案 0 :(得分:1)

就像错误所说的那样,如果提供了多个X坐标矩阵,则需要指定Y坐标。在您的情况下,您有两个,CkkkCkk。如果您需要将它们绘制为两个独立变量,则下面有一个解决方案

figure; clf;
plot(t, Ckkk,'b', t,Ckk,'r');

另一种解决方案是

figure; clf;
hold on;
plot(t, Ckkk,'b');
plot(t, Ckk,'r');
hold off;

在稍后的版本中,您实际上可以跳过t,因为您为每个Y函数提供了一个plot矩阵。

在此处发布问题之前,通常最好先查看documentation