RcppArmadillo:带有each_slice的Lambda表达式

2023-12-14

我有一个具有正定矩阵的三维数组,我想获得一个具有所有矩阵的 Cholesky 因子的相同大小的数组。我正在使用犰狳库和cube类型,有方便的功能each_slice我正在尝试使用它。但我没有让 lambda 表达式正常工作,所以希望有人可以帮助我并指出我的错误。

这是一个最小的例子:

// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>

// [[Rcpp::export]]
arma::cube chol_array(arma::cube Sigma) {
  arma::cube Sigma_chol = Sigma;
  Sigma_chol.each_slice([](arma::mat X) {return arma::chol(X);});
  return Sigma_chol;
}
// [[Rcpp::export]]
arma::cube chol_array2(arma::cube Sigma) {
  arma::cube Sigma_chol(size(Sigma));
  for (arma::uword i = 0; i < Sigma.n_slices; i++) {
    Sigma_chol.slice(i) = arma::chol(Sigma.slice(i));
  }
  return Sigma_chol;
}

/*** R
Sigma <- array(crossprod(matrix(rnorm(9), 3, 3)), dim = c(3, 3, 2))
chol_array(Sigma)
chol_array2(Sigma)
*/

功能chol_array2完成工作,但是chol_array只是返回原始矩阵。我缺少什么?


这里的问题是缺乏参考文献.each_slice()称呼。 Armadillo 使用 lambda 表达式需要引用来更新对象并not返回声明。特别是,我们有:

对于表格 3:

将给定的 lambda_function 应用于每个切片;该函数必须接受对与底层多维数据集具有相同元素类型的 Mat 对象的引用

所以,改变:

Sigma_chol.each_slice([](arma::mat X) {return arma::chol(X);});

to:

Sigma_chol.each_slice([](arma::mat& X) {X = arma::chol(X);});

固定码

// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>

// Enable lambda expressions.... 
// [[Rcpp::plugins(cpp11)]]

// [[Rcpp::export]]
arma::cube chol_array(arma::cube Sigma) {
  arma::cube Sigma_chol = Sigma;

  // NOTE: the '&' and saving _back_ into the object are crucial
  Sigma_chol.each_slice( [](arma::mat& X) { X = arma::chol(X); } ); 

  return Sigma_chol;
}

测试代码

set.seed(1113)
Sigma = array(crossprod(matrix(rnorm(9), 3, 3)), dim = c(3, 3, 2))
all.equal(chol_array(Sigma), chol_array2(Sigma))
# [1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RcppArmadillo:带有each_slice的Lambda表达式 的相关文章

  • 在 dplyr 中重命名列时进行整洁的评估

    我正在尝试使用动态重命名数据框中的单个列rename 与整齐的评价语法发布于dplyr v0 7 0 https blog rstudio com 2017 06 13 dplyr 0 7 0 来自 rename帮助页面上 我找到了以下示例
  • ASP.NET Core处理JSON反序列化问题

    我想更改 ASP NET Core 中无效 JSON 请求处理的默认行为 我有这个模型 public class Model public Guid Id get set 当我用这个 body 发送这个请求时 Id null 它返回此错误消
  • 分段错误(核心转储)

    当我尝试运行此程序时 出现分段错误 核心转储 它编译完美 但我收到错误 我不知道为什么 我已尝试以所有可能的方式编辑我的代码 但仍然收到此错误 我已经没有主意了 任何帮助都会很棒 谢谢 unsigned short reg NULL int
  • IDeserializationCallback 与 OnDeserializedAttribute

    据我了解 当对象在反序列化后需要执行某些任务时 可以使用 IDeserializationCallback 接口和 OnDeserialized 事件 IDeserializationCallback Serializable public
  • 空别名共享指针是否是无操作删除共享指针的良好替代方案?

    有时我需要shared ptr具有无操作删除器的实例 因为 API 期望shared ptr例如 它想要存储有限的时间 但我得到了一个原始指针 不允许我拥有比我运行的时间更长的时间 对于这种情况 我一直使用无操作删除器 例如 const v
  • 错误:LNK1120:5 个未解析的外部

    我试图在我的帖子中获取有关已安装应用程序的详细信息 而且 我收到以下错误 Code include
  • 查找条目多于 R 中某个值的行总和

    我有以下矩阵 m structure 1 20 Dim 4 5 m 1 2 3 4 5 1 1 5 9 13 17 2 2 6 10 14 18 3 3 7 11 15 19 4 4 8 12 16 20 gt 我想找到每行中条目值大于 5
  • 浮点指令异常——FLDZ故障?

    I am trying to debug the problem I posted earlier here C and pin tool very weird DOUBLE variable issue with IF statement
  • 如何使用窗口函数来确定何时执行不同的任务?

    注意 我对 SQL 提出了类似的问题 如何使用窗口函数来确定何时在 Hive 或 Postgres 中执行不同的任务 https stackoverflow com questions 48598730 how to use a windo
  • 无锁“如果不为零则递减”

    我目前正在用 C 重新发明线程池的轮子 我已经消除了代码中的几乎所有锁 除了以下构造的多个实例之外 std atomic size t counter void produce counter void try consume if cou
  • 将 wav 文件存储在数组中

    我需要一种快速方法来将 wav 文件的所有样本存储在数组中 我目前正在通过播放音乐并存储来自示例提供程序的值来解决这个问题 但这不是很优雅 从 NAudio 演示中 我有带有此方法的 Audioplayer 类 private ISampl
  • 使用其他数据填充缺失值?

    A lt data frame Item A c 00EF 00EF 00EF 00EF 00EF 00FR 00FR Item B c NA NA NA NA JAMES RIVER NA NA B lt data frame Item
  • Json.Net 反序列化 JSON 对象,索引为名称 [重复]

    这个问题在这里已经有答案了 我尝试使用 Json NET 从 Web 服务解析 JSON 该 Web 服务返回以下格式的数据 0 ID 193 Title Title 193 Description Description 193 Orde
  • 按行和列重叠合并 2 个数据框

    我想加法合并 2 个数据框 这样 taxonomy A B C 1 rat 0 1 2 2 dog 1 2 3 3 cat 2 3 0 and taxonomy A D C 1 rat 0 1 9 2 Horse 0 2 6 3 cat 2
  • Asp.net MVC 2 缓存

    我目前正在使用 c 中的 asp net mvc 2 开发一个网站 我从未使用过 MVC 中的缓存功能 并且想将其应用到用户个人资料页面 此页面上的内容很少更改 唯一需要实时的部分是用户最近发布的帖子列表 我使用linq to sql从数据
  • 在 OpenGL 中绘制 2D 纹理 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我有一个绘图函数叫做DrawImage但这确实令人困惑 并且仅适用于特定形式的重塑函数 所以我有两个问题 如何在 Ope
  • 在文本文件中搜索字符串的更快方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 C 在一组文本文件中搜索一个大约 13 个字符的字符串 文本文件的数量正在变化 范围在 100 1000 之间 文件大小范
  • 双击 C# 中的 Windows 窗体

    如何检测哪个鼠标按钮双击了表单 即左键 右键或中键 Updated 我使用的是 NET2 0 将最后点击的按钮存储在MouseUp事件 然后在双击事件中检查该事件 示例代码 MouseButtons lastButtonUp MouseBu
  • Sharepoint 客户端 GetFolderByServerRelativeUrl 文件夹修改日期

    我试图在使用 GetFolderByServerRelativeUrl 函数时检索文件夹的 修改日期 和 创建日期 我该怎么做 我只能从中获取relativeUrl 和文件夹名称 下面是我为检索文件夹所做的操作 请帮忙 FolderColl
  • 使用本机 Win32 读取“C”中的文本文件(Unicode)

    我有一个使用 CreateFile 和 WriteFile 创建的面向行的文本文件 Unicode 使用 ReadFile 以二进制流形式读取该文件非常简单 但需要额外的低级处理才能将其分成几行 是否有 Win32 函数可以为我执行此操作

随机推荐

  • 在Android中录音期间暂停或停止对讲语音

    我在手机 galaxy S6 中启用了辅助功能 然后尝试在单击按钮后进行录音 该按钮有一个包含长消息的 contentDescription 属性 问题是 Talkback 在语音留言录制过程中继续给出指示 我试图在录音时通过清空 cont
  • 在 Google Sheets 或 Excel 中计算当前月份和年份的行数

    我有一行填充了 MM dd yyyy 格式的日期 带有标题行 例如 DATES 5 12 2015 4 12 2012 5 7 2015 5 7 2014 我想计算与当前月份和年份匹配的行数 在上面的示例中 结果显然是两个 当时是 2015
  • Angular.js 动态表单输入类型

    我正在尝试制作一个 Angular js 应用程序 它从 JSON 对象创建动态表单输入 首先 我有一个 JSON 对象 称为字段 field id 209 form id 1 name firstname label First Name
  • MATLAB 中的高效多类加权多数投票实现

    这几天我想知道如何在matlab中有效地实现m位专家的加权多数投票 这是我想要的一个例子 假设我们有 3 位专家 其权重向量 w 7 2 6 假设他们对选项 A B C D 进行了 n 次投票 因此我们得到以下 n x m 投票矩阵 其中列
  • 从 ASP.NET 中的 Gridview 获取当前行

    我有一个带有删除和编辑按钮的 Gridview 看起来像
  • 将产品模块名称添加到 FinderSync plist 中的 NSExtensionPrincipalClass 会使其崩溃

    我的可可应用程序有一个查找器同步扩展 正如苹果指南中建议的那样 https developer apple com library content documentation General Conceptual Extensibility
  • 向自动生成的实体添加属性的最佳方法是什么(使用 VS2010 和 EF4)

    ASP NET MVC2 强烈支持在实体上使用属性 验证 扩展 Html 帮助器类等 如果我使用 VS2010 EF4 实体数据模型 edmx 和它的 cs 类 从数据库生成模型 并且我想添加属性 关于某些实体 最好的做法是什么 我应该如何
  • 如何在没有 cURL 的情况下使用 PHP HTTP POST XML 文件? [复制]

    这个问题在这里已经有答案了 我有一个从 MySql 中的表创建的 XML 我需要进行 HTTP Post 来将 XML 插入到 Web 服务中 Web 服务仅接受 SOAP HTTP POST 和 HTTP GET 方法 我尝试以不同的方式
  • Swing:将切换按钮与按钮组以及相应的菜单项链接在一起

    对于一个学校项目 我需要制作一个简单的绘画应用程序 可以绘制线条 椭圆形和矩形 作业指定我需要工具栏按钮and每种形状的菜单项 我想通过制作按钮来更进一步JToggleButtons在工具栏和菜单项中JRadioButtonMenuItem
  • 如何暂时关闭睿频加速?

    在我们的应用程序中 我们有针对不同类型的处理器架构优化的同一例程的多个版本 在安装过程中 我们运行性能测试并选择最佳版本的例程 如果使用的核心很少 最新的处理器可以提高频率 因此有时我们的测试会看到错误的例程版本 有什么方法可以暂时关闭睿频
  • Chrome 的 gwt 插件

    我正在开发 GWT 应用程序 在开发模式下 我可以在FF和IE中成功打开应用程序 但是 当我尝试在 Chrome 中打开它时 我发现缺少插件窗口 单击它后 它会下载我用来安装的 crx 我得到成功安装的对话框 但是 当我刷新浏览器时 我得到
  • 无论颜色如何,如何获得清晰的边缘

    我正在尝试开发一个使用 Android 相机检测卡 主卡 签证卡 客户卡等 的应用程序 为此我使用了 OpenCV4Android 版本 3 0 0 为了完成这个任务 我做了以下工作 1 使用将从相机拍摄的帧转换为灰度 Imgproc cv
  • Java/Swing:低调按钮高度?

    我想减小 JButton 的垂直尺寸 以下代码对于 K gt 1 工作正常 但我似乎无法减小大小 有什么建议么 JButton button get button here Dimension d button getPreferredSi
  • 如何在 Node 中追加到文件?

    我在尝试着append日志文件中的字符串 但是 writeFile 每次在写入字符串之前都会擦除内容 fs writeFile log txt Hello Node function err if err throw err console
  • 如何覆盖 DataGrid 选择行为?

    我想按以下方式修改 DataGrid 的选择行为 通常 当您选择了多行 然后单击已选择的项目之一时 选择将重置为仅单击的项目 我想更改它 以便如果在没有任何键盘修饰符的情况下单击多选行之一 则不会修改选择 这样做的目的是允许多项目拖放 我注
  • Coldfusion 开发者版和企业版有什么区别?

    我正在尝试测试 Coldfusion 以用于学习目的 但我真的不知道非免费企业版添加到免费开发人员版中的附加功能是什么 Thanks 从法律上讲 Enterprise 是供公众消费的 而 Dev 则不是 实际上 这意味着 Dev 版本 与
  • 新项目向导后卡在 Android Studio 中

    在使用 Eclipse ADT 很长时间之后 我决定尝试 Android Studio 我在 Windows 7 64 位计算机上工作 安装了 JDK 7 64 位 我已经下载了 Android Studio 0 3 2 安装了它 升级到
  • excel VBA 错误:调用的对象已与其客户端断开连接

    这似乎是一个正常的问题 我在这里搜索并尝试了很多建议 但错误仍然存 在 我想将当前工作簿中的 case1 工作表复制到现有工作簿 文件名是 workbook2 xlsx 它有一个名为 case2 的工作表 然后保存工作簿并关闭它 有时它工作
  • np.genfromtxt 返回带有“b”的字符串[重复]

    这个问题在这里已经有答案了 我正在学习 NUmpy 的不同功能 并且我有一个虚拟数据集here命名为 100 条销售记录 现在我想用它来阅读它np genfromtxt 我的阅读代码是 df3 np genfromtxt 100 Sales
  • RcppArmadillo:带有each_slice的Lambda表达式

    我有一个具有正定矩阵的三维数组 我想获得一个具有所有矩阵的 Cholesky 因子的相同大小的数组 我正在使用犰狳库和cube类型 有方便的功能each slice我正在尝试使用它 但我没有让 lambda 表达式正常工作 所以希望有人可以