我试着先描述前提条件
我有许多图像/矩阵,可以想象成图像处理程序中的图层。将添加这些图层以形成最终输出。每层的因子从0到1
x_1 * M_1 + x_2 * M_2 + ... = S
M_i矩阵是固定的,不会改变。 目标是确定最佳(不一定是最佳)近似给定S
的x_i因子矩阵的二维性与解决问题无关。它们可以重新排列,形成矩阵形式的线性方程组。
每个矩阵M_i是M的列,它们一起形成等式
M·x = S
M可能非常大(几个10.000行,100列)
您对方法有什么建议,最好是基于库来解决这个问题吗?我知道有很多库可以解决最小二乘问题,但我找不到支持约束的库。首先完成> = 0条件会为我做
提前感谢您的帮助
答案 0 :(得分:2)
答案 1 :(得分:0)
你可以使用NLopt库进行优化,并构建你的目标函数作为squered创新的计算(可能使用COBYLA算法)。
您也可以使用QuantLib的General Linear Leaast Squeres类,用法非常简单:
LinearRegression *lr = new LinearRegression( x, y, 1.0);
cout << lr->coefficients();