我目前正在尝试使用Matlabs robust fit page中建议的平滑样条拟合的稳健版本。但是当我绘制结果(见下文)时,看起来这条线似乎不符合趋势。
我使用平滑样条曲线来拟合1e-7的平滑参数,因为我的目标是只有一个微弱的弯曲线(就像你在图片中看到的那样,但它实际上应该适合数据)。
任何人都知道为什么这条线不能更好地适应数据?或者这只是“差”平滑样条是如何拟合的?
编辑:我以为我已经对代码进行了很好的检查,但结果显示在绘图中仍然存在错误。
Data in .mat format。 Isamples是ydata,runorder_sample是xdata。
这是我代码的一小部分:
%First pre fit
xdata = runorder;
ydata = I(i,:)';
fit1 = fit(xdata, ydata, 'smoothingspline','SmoothingParam', smoothingParam);
fdata = feval(fit1, xdata); %data points in fited curve
idx = abs(fdata-ydata) > 1.5*std(ydata); %index without outliers
outliers{i} = excludedata(xdata, ydata, 'indices', idx);
%real fit
[f{i}, ~, out] = fit(xdata, ydata, 'smoothingspline',...
'SmoothingParam', smoothingParam, 'exclude', outliers{i});
(我在循环中对矩阵的所有行进行,因此“i”用于保存绘图数据)。