数据驱动曲线-MATLAB

数据驱动曲线-MATLAB,matlab,twitter-bootstrap,statistics,curve,Matlab,Twitter Bootstrap,Statistics,Curve,我有几组数据需要拟合,但不是所有的看起来都一样,有些看起来像一个有一个峰的高斯函数,有些像两个有两个峰的高斯函数或洛伦兹函数。我想试试这个方法 但是给出的程序不完整,所以我不能使用它。没有定义“训练”和“测试”的行。我编写它是为了使它适合我的数据,并基于给出的代码和演示来工作。我能够找到最合适的,但我也尝试使用引导技术,以找到置信区间。我的数据是xdata和ydata,在我的程序中使用它们之前,它们已被排序,重复项已被删除 cpart=cvpartition(size(xdata,1),'k',

我有几组数据需要拟合,但不是所有的看起来都一样,有些看起来像一个有一个峰的高斯函数,有些像两个有两个峰的高斯函数或洛伦兹函数。我想试试这个方法 但是给出的程序不完整,所以我不能使用它。没有定义“训练”和“测试”的行。我编写它是为了使它适合我的数据,并基于给出的代码和演示来工作。我能够找到最合适的,但我也尝试使用引导技术,以找到置信区间。我的数据是xdata和ydata,在我的程序中使用它们之前,它们已被排序,重复项已被删除

cpart=cvpartition(size(xdata,1),'k',10); 
tr_x=xdata(training(cpart,1));
tr_y=ydata(training(cpart,1));
tst_x=xdata(test(cpart,1));
tst_y=ydata(test(cpart,1));

all_span=linspace(0.01,0.99,99);
s=zeros(length(all_span);
for k=1:length(all_span)
f = @(tr_x,tr_y,tst_x,tst_y)  norm(tst_y mylowess (tr_x, tr_y, tst_x,  all_span (k)))^2
s(k) = sum(crossval(f,datax,datay,'partition',cpart));
end

 [~,mj]=min(s);
 n_span=all_span(mj);%n_span is the optimal span


function ys=mylowess(x1,y1,xs,span)
ys1 = smooth(x1,y1,span,'loess');
ys = interp1(x1,ys1,xs,'linear',NaN);
if any(isnan(ys))
   ys(xs<x1(1)) = ys1(1);
   ys(xs>x1(end)) = ys1(end);
end
我得到以下错误

使用GridDedInterplant时出错 网格向量不是严格单调递增的

interp1第186行出错 F=GridDedInterplantx,V,方法

MyLowss第26行出错 ysmooth=interp1xdata,ysmooth1,xinput,'linear',NaN

正如我之前所说的,扩展数据中没有重复项,在程序中使用它们之前,我已经对扩展数据进行了排序。有人能看出我犯的错误吗?还是有更简单的方法来获得置信区间


感谢您的帮助。

引导将生成副本并更改顺序。您可以选择不会产生重复项的jackknive,但您可能需要再次排序。我不熟悉这种技术,您能给我举个例子吗?语法几乎相同:
   NB=length(xdata);
   f=@(xdata,ydata) mylowess(xdata,ydata,xdata,n_span);
   yboot2 = bootstrp(NB,f,xdata,ydata)';