这是测试输入输出数据集凸性的一种快速而肮脏的方法 - 即是否存在可以在指定的残差容差内拟合数据的凸函数。 编写它是为了在一组噪声数据上测试局部凸性假设,其中残差容差等于噪声的最大幅度。
该算法很简单,并且基于一般凸函数插值问题的线性规划重构(例如,参见 Boyd 和 Vandenberghe 的“凸优化”的第 338 页)。 求解线性程序以将分段线性函数拟合到数据。 如果解的最大残差大于指定的误差容限,则表示凸函数的数据的假设将被拒绝(否则将保留)。
该文件调用 MATLAB 中的 linprog 函数作为求解器,并没有尝试利用约束矩阵的结构。 因此,它可能仅适用于中等规模的问题,否则可能会耗尽内存。 任何想改进文件这一部分的人都非常欢迎这样做。 同样欢迎所有其他反馈/更正。
注意:数据凹度检查 - 以查看数据是否为凹面 - 可以使用同一个文件完成。 输出向量只需要取反即可。
2022-09-17 10:49:29
2KB
matlab
1