- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 cholmod_dense 数据结构:
cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com);
我想提取这些值并将它们复制到另一个变量。这意味着我需要索引 double 组并复制值。
for (int k=0; k<ncols; k++) T_x[k]=((double*)ex->x)[k];
编译器可以接受,但我遇到了段错误。或者我认为我应该能够做到:
double* e_x =(double*)ex->x;
for (int k=0; k<ncols; k++) T_x[k]=*e_x[k];
但是编译器真的不喜欢这样:
error: invalid type argument of unary ‘*’ (have ‘double’)
for (int k=0; k<ncols; k++) T_x[k]= *e_x[k];
根据 CHOLMOD 用户指南:
- cholmod dense: A dense matrix, either real, complex or zomplex, in column-major order. This differs from the row-major convention used in C. A dense matrix X contains • X->x, a double array of size X->nzmax or twice that for the complex case. • X->z, a double array of size X->nzmax if X is zomplex.
所以我应该能够简单地获取 ex->x 并将其作为 double 组进行索引,但我不能在没有段错误的情况下这样做。谁能帮帮我吗?
CHOLMOD 库是用 C 编写的,链接到 CHOLMOD 库的代码(上面显示的代码片段)是 c++。
最佳答案
好吧,看来我犯了一些错误。
首先,我遇到了段错误,因为我使用的是cholmod_l_zeros();
,它假定长整数
。相反,我应该使用 cholmod_zeros();
因为我使用的是 double
。
修复此问题后,我在 cholmod_solve(CHOLMOD_A, L, B, &com);
语句之后遇到了错误 CHOLMOD error: invalid xtype
。这是因为我的 cholmod_factor* L
定义超出了范围。解决这两个问题后,代码成功地将值从 cholmod_dense ex->x double array
复制到我的 T_x double vector
:
cholmod_dense* ex = cholmod_solve(CHOLMOD_A, L, B, &com);
double* e_x = (double*)ex->x;
for (int k=0; k<ncols; k++) T_x[k] = e_x[k];
我也不知道 []
运算符会自动取消引用指针。很高兴知道!
关于c++ - 索引到 CHOLMOD 密集 vector 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45362990/
我最近安装了 Cholmod 以便在某些 C++ 代码中执行稀疏 cholesky 分解。然后我想使用分解来计算矩阵逆(我有以下问题: d^T . (A^-1 + B^-1)^-1 . d 其中d是一
我在 SuiteSparse 中使用 CHOLMOD 来因式分解 N通过 N相对稀疏的大带对角矩阵,即它仅包含一些非零对角线。矩阵的稀疏性由协方差长度参数设置 l .较大的l非零的非对角线元素的数量越
我正在使用通过 macports 安装的 SuiteSparse @4.2.1_3 并希望分配 cholmod_dense 结构。考虑以下代码: /* start CHOLMOD */ cholmod
任何人都可以给我一个简单的例子,说明如何使用 CHOLMOD 将元素添加到三元组矩阵吗? . 我试过这样的: cholmod_triplet *A; int k; void add_A_entry(i
我已经问过类似的问题,但这次我会更具体一些。 我需要在 for 循环内执行一个通常较大的正定对称矩阵(大约 1000x1000)的 Cholesky 分解。现在,为了做到这一点,我一直在尝试: 1)
如何在超节点 L L^T 分解中乘以 cholmod_factor L?我不想转换为单纯形,因为超节点表示会导致更快的反解,而且我不想复制因子,因为两个副本可能不适合 RAM。 最佳答案 我最终从 t
我正在尝试在 SuiteSparse 4.4.4 中使用 CHOLMOD 和 CUDA 加速。我按照用户指南编译,可以成功运行Demo文件夹下的gpu.sh,这说明GPU已经完成了部分工作。但是,当我
我有一个 cholmod_dense 数据结构: cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com); 我想提取这些值并将它们复制到另
我一直在使用 CHOLMOD 分解矩阵 A 并求解系统 Ax = b,因为 A 是 Hessian 矩阵(打印在下面)并且 b = [1, 1, 1] 由 cholmod_ones函数。 不幸的是,x
在SparseSuiteQR ,我能找到的所有示例都使用标准输入或读取的文件来创建稀疏矩阵。有人可以提供一个简单的示例来说明如何直接在 C++ 中创建一个吗? 更好的是,在 CHOLMOD 文档中,提
Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61(性能更新); Nvidia 驱动程序 384.98; 我已将 GPU 加速的 CHOLMOD 成功实现到
有一段时间我试图从 SuiteSparse 创建一个静态 CHOLMOD 库每个其他库(例如 Umfpack)都可以从 IDE 轻松编译(我在 Linux 上使用 Code::Blocks,在 Win
我已从以下位置下载了 SuiteSparse 的 .zip GitHub 。我正在尝试在 Ubuntu 中安装/编译 C/C++ 库。我正在使用适用于 Linux 的 Windows 子系统并从 Mi
我正在尝试使用 Eigen::CholmodSupernodalLLT然而,对于 Cholesky 分解,我似乎无法得到 matrixL()和 matrixU() .如何提取matrixL()和 ma
它只是报告: Cholmod error 'X and/or Y have wrong dimensions' at file ../MatrixOps/cholmod_sdmult.c, line
我是一名优秀的程序员,十分优秀!