我可以在 Armadillo 中实例化矩阵,然后在后面的代码行中将其设置为使用辅助内存吗?

Posted

技术标签:

【中文标题】我可以在 Armadillo 中实例化矩阵,然后在后面的代码行中将其设置为使用辅助内存吗?【英文标题】:Can I instantiate matrix in Armadillo and then set it to use auxiliary memory in a later line of code? 【发布时间】:2011-10-24 07:28:29 【问题描述】:

我将犰狳与 RcppArmadillo 一起使用。是否可以用arma::mat A 声明一个矩阵,然后为我之前用arma::mat(aux_mem*, n_rows, n_cols, copy_aux_mem = true, strict = true) 创建的这个矩阵分配一些内存?

目的是从 Rcpp::NumericMatrix 创建一个犰狳矩阵,但只有if() 满足某个条件。然后稍后在同一个函数中,我想使用该矩阵,但再次只满足if() 一个条件。

【问题讨论】:

【参考方案1】:

如果我理解您的问题,答案可能是。布尔值在最后控制是否分配新内存,或者是否重用现有对象的内存。

不确定“为该矩阵分配一些内存”是什么意思。如果您希望 R 管理内存,请参阅 Writing R Extensions 手册,了解您可以做什么和不能做什么 - 关键是对于我们返回到 R 的对象,我们需要创建它们以便它们成为 R 的“原生”。而 Rcpp 可以做到这一点,而 RcppArmadillo 也可以让你做到这一点。

另外:您最好在犰狳的作者康拉德也阅读的 rcpp-devel 列表中提出这些问题。

【讨论】:

以上是关于我可以在 Armadillo 中实例化矩阵,然后在后面的代码行中将其设置为使用辅助内存吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用Armadillo和boost :: numeric :: odeint进行模板实例化

OpenMP 在使用 Armadillo 的代码中生成段错误

如何在 C++ 中快速对角化矩阵?

Armadillo - 从列向量中的值填充矩阵

C ++ Armadillo:来自二维矩阵的索引数组

使用 Armadillo C++ 加载稀疏矩阵