- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在寻找 Moore-Penrose 算法计算伪逆矩阵的 Matlab 实现。
我尝试了几种算法,这个
http://arxiv.org/ftp/arxiv/papers/0804/0804.4809.pdf
第一眼看上去不错。
然而,问题是,对于大元素,它会生成缩放比例很差的矩阵,并且某些内部操作会失败。它涉及以下步骤:
L=L(:,1:r);
M=inv(L'*L);
我正试图找到一个更强大的解决方案,它可以在我的其他软件中轻松实现。感谢您的帮助。
最佳答案
我使用 Lutz Roeder 的 Mapack 矩阵库在 C# 中重新实现了一个。也许这个版本或 Java 版本对您有用。
/// <summary>
/// The difference between 1 and the smallest exactly representable number
/// greater than one. Gives an upper bound on the relative error due to
/// rounding of floating point numbers.
/// </summary>
const double MACHEPS = 2E-16;
// NOTE: Code for pseudoinverse is from:
// http://the-lost-beauty.blogspot.com/2009/04/moore-penrose-pseudoinverse-in-jama.html
/// <summary>
/// Computes the Moore–Penrose pseudoinverse using the SVD method.
/// Modified version of the original implementation by Kim van der Linde.
/// </summary>
/// <param name="x"></param>
/// <returns>The pseudoinverse.</returns>
public static Matrix MoorePenrosePsuedoinverse(Matrix x)
{
if (x.Columns > x.Rows)
return MoorePenrosePsuedoinverse(x.Transpose()).Transpose();
SingularValueDecomposition svdX = new SingularValueDecomposition(x);
if (svdX.Rank < 1)
return null;
double[] singularValues = svdX.Diagonal;
double tol = Math.Max(x.Columns, x.Rows) * singularValues[0] * MACHEPS;
double[] singularValueReciprocals = new double[singularValues.Length];
for (int i = 0; i < singularValues.Length; ++i)
singularValueReciprocals[i] = Math.Abs(singularValues[i]) < tol ? 0 : (1.0 / singularValues[i]);
Matrix u = svdX.GetU();
Matrix v = svdX.GetV();
int min = Math.Min(x.Columns, u.Columns);
Matrix inverse = new Matrix(x.Columns, x.Rows);
for (int i = 0; i < x.Columns; i++)
for (int j = 0; j < u.Rows; j++)
for (int k = 0; k < min; k++)
inverse[i, j] += v[i, k] * singularValueReciprocals[k] * u[j, k];
return inverse;
}
关于Matlab:Moore-Penrose伪逆算法实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13330459/
我有一个表类别,它与一对多关系中的任务表相关,我正在尝试使用 Moor 执行连接。 我想返回与类别匹配的任务列表的列表。我该怎么做? Stream> watchAllCategories(
我还没有找到任何关于在 Flutter ORM moor 中内置 Enum 列的可能性的文档。创建枚举列的最佳方法是什么?我想要这个: enum PersistentType { File,
我还没有找到任何关于在 Flutter ORM moor 中内置 Enum 列的可能性的文档。创建枚举列的最佳方法是什么?我想要这个: enum PersistentType { File,
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我对 moor 的依赖: moor_flutter: ^2.1.1 moor_ffi: ^0.4.0 我有表格: netPoint = 关于 netPoint 的信息 netPointNetP
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8 年前关闭。 Improve this
我正在寻找 Moore-Penrose 算法计算伪逆矩阵的 Matlab 实现。 我尝试了几种算法,这个 http://arxiv.org/ftp/arxiv/papers/0804/0804.480
我正在开发一个 flutter 应用程序(当时仅适用于 Android,但计划稍后支持 iOS)。该应用程序以两种方式运行: 具有大部分业务逻辑的 Flutter UI(前台隔离,从 main 方法开
当我执行 update(table).replace(model) 时,我只想更新指定的列它替换与主键对应的所有数据。如何只更新指定的列而不编写自定义查询。 最佳答案 你必须用 Insertable
我正在尝试使用 2D 数组从 boyer moore 实现错误字符规则以进行子字符串搜索,我遇到了我看到我的 arr[0][1] 与 arr[1][0] 重叠的情况这引起了问题。我试图遍历 VS 中的
我正在尝试在大量文本中实现精确的文本搜索。为此,我找到了一些针对 c# 的 Boyer Moore 实现示例,但现在我无法理解它是如何工作的。 例如,如果我有字符串 this is sample te
根据我的理解,找到多数元素的 Boyer-Moore 多数表决算法是 O(1),即它是常数,与输入的大小不成比例。那为什么要wiki link提到对数空间 {\displaystyle O(\log
关于此算法中的两个转换规则(坏字符和好后缀),我有些不明白。他们是否一起工作,以及究竟是什么决定了在每种情况下或轮类中部署哪一个。 This综合解释以 SSIMPLE EXAMPLE 的示例结束,这让
在Boyer-Moore string search algorithm wiki 链接,据说 Boyer-Moore 的最坏情况复杂度是 O(m+n) 如果模式没有出现在文本中 O(mn) 如果模式
我不是专业程序员,所以请多多包涵。我正在四处寻找为什么 haystack 和 needle 的初始“对齐”不应该在 needle 的最后一个字符与 haystack 中的相同字符的第一次一致时进行,但
我正在研究 Boyer-Moore 算法(来自 here),我有一个快速的问题 - 第二遍的需要是什么(它基本上只是通过找到该元素的频率来“确认”)。第一个传递本身不是保证找到的元素是多数元素吗?我考
我将 flutter_moor 用于 SQLite 数据库。我有一个问题,我需要一个 double 的货币金额列,小数点后两位。 我发现有一个 RealColumn,但不知道如何正确实现它。 ///
我即将实现 Boyer-Moore 模式匹配算法的变体(具体来说是星期日算法),我问自己:我的字母表大小是多少? 这取决于编码(= 可能的字符数)还是我可以假设我的字母表包含 256 个符号(= 可以
我在项目中大量使用字符串,因此我正在寻找一个快速的库来处理它们。我认为 Boyer-Moore 算法是最好的。 有免费的解决方案吗? 最佳答案 您可以考虑实现 Boyer–Moore 算法的以下资源:
我是一名优秀的程序员,十分优秀!