赞
踩
目录
函数原型:
- int cv::solve(
- cv::InputArray lhs, // lefthand side of system, n-by-n
- cv::InputArray rhs, // righthand side of system, n-by-n
- cv::OutputArray dst, // result array, will be n-by-1
- int method = cv::DECOMP_LU // method for solve
- );
计算公式:
函数说明:
上面公式中A是一个由lhs指定的方阵,B是向量rhs,C是cv::solve()计算的结果,目标是寻找一个最优向量X。最优向量X将返回给dst。用于求解此系统的实际方法由method参数决定。该函数只支持浮点数据类型。该函数将返回一个整数值,当返回的值是一个非零值的话,就表明找到了一个解。method参数的可能的值如下:
method参数的值 | 意义 |
cv::DECOMP_LU | 高斯消元法(LU分解) |
cv::DECOMP_SVD | 奇异值分解(SVD) |
cv::DECOMP_CHOLESKY | 对于对称正定矩阵 |
cv::DECOMP_EIG | 特征值分解,只用于对称矩阵 |
cv::DECOMP_QR | QR因式分解 |
cv::DECOMP_NORMAL | 可选附加标志,表示要求解标准方程 |
值得关注的是cv::DECOMP_LU和cv::DECOMP_CHOLESKY的方法不能用于奇异矩阵。如果提供一个奇异的lhs参数,两个方法都将退出并返回0(如果lhs是非奇异的,则返回1)。可以使用cv::solve()中的QR分解(cv::DECOMP_QR)或奇异值分解(cv::DECOMP_SVD)来求解给定方程组的最小二乘解,从而求解超定线性系统,这两种方法在矩阵lhs奇异的情况下也可以使用。
上表中的前五个参数是互斥的,但是最后一个参数可以与前面五个中的任何一个组合。如果使用了cv::DECOMP_NORMAL,那么cv::solve()将尝试解决标准方程:,而不是一般方程:。
函数原型:
- int cv::solveCubic(
- cv::InputArray coeffs,
- cv::OutputArray roots
- );
函数说明:
给定由三个或四个元素向量系数表示的三次多项式,cv::solveCubic将计算该多项式的实根,如果coeffs有四个元素,则计算以下多项式的根:
如果coeffs只有三个元素,则计算以下多项式的根:
结果会存储在矩阵roots中,它将具有一个或三个元素,具体取决于多项式具有多少个实根。
函数原型:
- int cv::solvePoly(
- cv::InputArray coedds,
- cv::OutputArray roots, // n complex root (2-channels)
- int maxIters = 300 // maximum iterations for solve
- );
函数说明:
给定以系数向量表示的任意阶数的多项式,cv::solvePoly()将尝试计算该多项式的根。给定系数矩阵,计算如下多项式的根:
这些根不能保证是实根,对于n阶多项式(即具有n+1个元素的coeffs),将存在n个根。因此,矩阵roots将返回双通道(实部,虚部)双精度矩阵。
值得关注的是cv::solveCubic和cv::colvePoly()两个函数的输入矩阵的系数的顺序是相反的。在cv::solveCubic中,最高阶系数在最后一个,而cv::solvePoly()中,最高阶系数在第一个。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。