Matlab中指数函数的线性回归

Matlab中指数函数的线性回归,matlab,linear-regression,Matlab,Linear Regression,我假设指数函数的形式是:y=y*exp(rt) 这是我目前的代码: A=[130, 300, 400, 500, 650, 1075, 2222, 2550, 3300]'; t = [1930, 1943, 1966, 1976, 1991, 1994, 2000, 2005, 2008]; t1=[1930, 1943, 1966, 1976, 1991]; idx=randperm(numel(A)); subSet1=A(idx(1:5)); %Trainingset subSet

我假设指数函数的形式是:y=y*exp(rt)

这是我目前的代码:

A=[130, 300, 400, 500, 650, 1075, 2222, 2550, 3300]';

t = [1930, 1943, 1966, 1976, 1991, 1994, 2000, 2005, 2008];

t1=[1930, 1943, 1966, 1976, 1991];

idx=randperm(numel(A));
subSet1=A(idx(1:5)); %Trainingset
subSet2=A(idx(6:end)); %Validationset

y=log(subSet1);
c=polyfit(t1,y, 1)

r=c(1);
lny0=(c(2));
y0=exp(c(2));

y2 = y0*exp(r*t);
plot(t,y2,'*')
为了使用polyfit来寻找参数,我在t中给出了前五年的时间,我认为这是导致我的代码错误的原因,因为“训练集”中精心选择的值与正确的年份不符。但是,我不确定如何定义t,使其与训练集长度相等,以便可以使用polyfit

然后有人问我,仅通过使用训练集来确定参数,验证集的点的估计效果如何。但是,当根据y2绘制t时,我会收到未包含在训练集或验证集中的点


有人能帮我指出我的错误吗。谢谢大家!

您还必须为不同的子集获取正确的
t
值,即
t1=t(idx(1:5))