首页 > 解决方案 > 如何解决 Matlab 函数 csaps 的非平滑结果

问题描述

我的目标是为大量非均匀间隔的数据找到平滑曲线,使曲线的最小幅度尽可能大。“csaps”函数似乎是我需要的,因为它允许通过改变平滑参数 p 来获得不同程度的平滑。我为此尝试了不同类型的优化,但发现结果不正确。“csaps”函数对 p 的低值产生不平滑的结果。这对我来说是最有趣的平滑参数范围。为了制作最小的工作示例,有必要在 *.mat 文件中附加数据。我不知道该怎么做。但是,如果我对我的数据运行以下代码:

plot(cv,pr,'.','DisplayName','data')
hold on
grid on
cvi=linspace(0,cv(end),10000);
p=1e-5;
pp = csaps(cv,pr,p);
plot(cvi,ppval(pp,cvi),'k-','LineWidth',2,'DisplayName',['p=',num2str(p)])
p=1e-10;
pp = csaps(cv,pr,p);
plot(cvi,ppval(pp,cvi),'r-','LineWidth',2,'DisplayName',['p=',num2str(p)])
legend('Location','best')

我得到:

csaps 不正确的平滑

对于 p=1e-10,对于较小的 cv 值,平滑曲线看起来不平滑。

我试过 fnval 而不是 ppval 但这并没有改善。有谁知道为什么会发生这种情况,我怎样才能对大型数据集进行良好的平滑处理?

标签: matlablarge-datasmoothingcubic-spline

解决方案


推荐阅读