x=[1:39]
y=[185035,188351,191112,193953,196086,199074,200654,20334,205257,207081,208584,214243,215667,216587,217452,217836,218198,218571,218945,219296,219625,220040,220397,220721,220958,221289,221565,221804,221955,222130,222370,222582,222775,222976,223145,223332,223488,223605,223735];
a=[10000,2,0.1];
f=@(a,x)a(1)./(1+a(2)*exp(-a(3)*x));
[A,resnorm]=lsqcurvefit(f,a,x,y)
t=39
while f(A,t+1)-f(A,t)>=1;
t=t+1;
end
t
f(A,t+1)
t=1:50;
plot(x,y,'b*',t,f(A,t+1),'k')这个是我自己搞得差错很多
% 输入数据
data = [185035,188351,191112,193953,196086,199074,200654,20334,205257,207081,208584,214243,215667,216587,217452,217836,218198,218571,218945,219296,219625,220040,220397,220721,220958,221289,221565,221804,221955,222130,222370,222582,222775,222976,223145,223332,223488,223605,223735];
x=1:length(data);
f=@(a,x) a(1)./(1 + a(2)*exp(-a(3)*x));
ini=[max(data),2,0.1];
% 利用 lsqcurvefit 进行拟合
par=lsqcurvefit(f,ini,x,data);
% 生成拟合曲线
fit=f(par, x);
% 绘制原始数据和拟合曲线
figure;
plot(x,data,'o-','DisplayName','实际数据');
hold on;
plot(x,fit,'*-','DisplayName','拟合数据');
% 预测未来感染人数
f_days=1:30; % 预测未来30天
f_x=x(end) + f_days;
p_data=f(par, f_x);
% 绘制预测未来感染人数曲线
plot(f_x,p_data,'x-','DisplayName','预测数据');
xlabel('日期');
ylabel('感染人数');
legend('show');
title('感染人数拟合与预测');这个是别人帮我搞的 但是她没有精确的感染人数规模,和结束日期