- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下代码按预期工作:
矩阵.cpp
// [[Rcpp::depends(RcppEigen)]]
#include <RcppEigen.h>
// [[Rcpp::export]]
SEXP eigenMatTrans(Eigen::MatrixXd A){
Eigen::MatrixXd C = A.transpose();
return Rcpp::wrap(C);
}
// [[Rcpp::export]]
SEXP eigenMatMult(Eigen::MatrixXd A, Eigen::MatrixXd B){
Eigen::MatrixXd C = A * B;
return Rcpp::wrap(C);
}
// [[Rcpp::export]]
SEXP eigenMapMatMult(const Eigen::Map<Eigen::MatrixXd> A, Eigen::Map<Eigen::MatrixXd> B){
Eigen::MatrixXd C = A * B;
return Rcpp::wrap(C);
}
这是对矩阵使用 C++ 特征类,参见 https://eigen.tuxfamily.org/dox
在 R 中,我可以访问这些函数。
library(Rcpp);
Rcpp::sourceCpp('matrix.cpp');
A <- matrix(rnorm(10000), 100, 100);
B <- matrix(rnorm(10000), 100, 100);
library(microbenchmark);
microbenchmark(eigenMatTrans(A), t(A), A%*%B, eigenMatMult(A, B), eigenMapMatMult(A, B))
这表明 R 在求取(转置)方面表现相当出色。乘法与 eigen 有一些优势。
使用 Matrix 库,我可以将普通矩阵转换为稀疏矩阵。
示例来自 https://cmdlinetips.com/2019/05/introduction-to-sparse-matrices-in-r/
library(Matrix);
data<- rnorm(1e6)
zero_index <- sample(1e6)[1:9e5]
data[zero_index] <- 0
A = matrix(data, ncol=1000)
A.csr = as(A, "dgRMatrix");
B.csr = t(A.csr);
A.csc = as(A, "dgCMatrix");
B.csc = t(A.csc);
因此,如果我想使用特征值将 A.csr 乘以 B.csr,如何在 C++ 中执行此操作?如果不需要,我不想转换类型。这是内存大小的事情。
A.csr %*% B.csr
尚未实现。A.csc %*% B.csc
正在运行。
我想对不同的选项进行微基准测试,看看矩阵大小如何最有效。最后,我将得到一个稀疏度约为 1% 且具有 500 万行和列的矩阵 ...
最佳答案
dgRMatrix 叉积函数尚未实现是有原因的,事实上,它们不应该被实现,否则它们会导致不良做法。
使用稀疏矩阵时需要考虑一些性能方面的问题:
可能存在行优先顺序闪耀的应用程序(即参见 Dmitry Selivanov 在 CSR 矩阵和 irlba svd 上的工作),但这绝对不是其中之一,事实上,这么多,所以你最好在-进行转换以得到 CSC 矩阵。
tl;dr:行优先矩阵中的列叉积是无效率的最后通牒。
关于c++ - 使用 R 和 Rcpp,如何将两个稀疏 Matrix::csr/csc 格式的矩阵相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67225377/
有没有办法针对当前工作目录以外的文件夹运行 csc,或者最好的做法是将 .cs 文件复制到当前工作目录,然后运行 csc? 最佳答案 是的,您可以为您的文件使用完整路径名但是,IMO 最简单的做法
我想从字符串编译 c# 源代码。我知道使用 CodeDom 可以做到这一点,我想知道是否可以使用命令行编译器来做到这一点。例如,假设我将以下代码加载到一个字符串上: static void Main(
我有一个包含多个项目的 Visual Studio 解决方案,特别是 DotNet5 asp.net 应用程序,其中包含多个 netstandard 2.0 引用。它在调试器中构建并运行良好,但不断抛
我有一个稀疏矩阵 X ' with 5082518 stored elements in Compressed Sparse Column format> 我有一个数组 columns_to_use
我正在使用 team city 调用 nant 脚本,目前这个 nant 脚本非常简单,仅在解决方案中的单个项目上调用 msbuild 任务。 构建失败,看起来正在调用 msbuild 3.5,但它错
至少我有以下稀疏矩阵: A = sparse([1 4 7; 2 5 8; 3 6 9]) 什么是最有效的获取方式: A = sparse([1 0 7; 2 0 8; 3 0 9]) 我使用的实际矩
至少我有以下稀疏矩阵: A = sparse([1 4 7; 2 5 8; 3 6 9]) 什么是最有效的获取方式: A = sparse([1 0 7; 2 0 8; 3 0 9]) 我使用的实际矩
我通过 Visual Studio Code 快速更改我的代码。如您所知,它没有内置编译器,所以我通过 CMD 使用 CSC。 它只适用于(代码 <= C# 4.6 & 代码 <= .NET 4.5)
所以我有两个不同形状的 csc 矩阵需要相加。矩阵看起来像这样: current_flows = (7005, 1001) 50.0 (8259, 1001) 65.0 (14007, 1
我正在按照教程在 C# 应用程序中使用 WSDL: http://my.execpc.com/~gopalan/dotnet/webservices/webservice_csharp_client.
我在一个目录中有多个 C# 源文件(大约 50 个)。我想要做的是分别编译它们,即它们中的每一个都应该生成自己的可执行文件。 (有些文件有一个或两个目录深。) 目前我正在做的是 csc *.cs /r
我在 VS2010 中有一个 C# 项目,它生成一个 DLL,里面有一个 COM 对象。 为了注册免费 COM,我想将 list 嵌入为 Win32 资源。因此,我需要将 /win32res:blah
我一直在从事一个项目,随着项目的发展,我意识到无法连接在一起的两个部分是相互依赖的。 我们将这两个部分称为a.exe 和b.dll。 b.dll 提供了一个允许 a.exe 检索数据的实现,但我希望它
在努力创建数据库(首先使用实体框架,然后没有)之后,我们有了一个数据库(和一个我们不使用的 EntityModel_HFFContext 文件,它没有连接)。正常工作继续进行,我为 MVC 站点地
这个问题在这里已经有了答案: How to get csc.exe path? (10 个答案) 关闭 5 年前。 我是 C# 的新手,我正在尝试使用 cmd 编译一个名为 test.cs 的基本
我正在使用 csc.exe 编译一个项目, 与 /analyzer:指向 ErrorProne.Net.CoreAnalyzers.dll 路径的标志和 ErrorProne.Net.Core.dll
我有一个关于TFS的项目,该项目正在除我的人以外的其他所有人的机器上工作。在构建时,出现了可以在图像中看到的错误。 “指定的任务可执行文件位置csc.exe无效。”当前正在尝试修复VS 2017。 最
当我使用 msbuild 从命令行构建解决方案时,我没有像 Visual Studio 那样从 csharp 编译器 (Csc) 获得任何输出。 例如,如果我在 Visual Studio 中构建解决
我刚刚将VS2019社区版本更新为版本16.7.2。我的项目开始因以下错误而无法构建(也许是链接步骤?)(以前构建得很好,我认为是在v16.6.something上): > Severity Cod
我想知道 msbuild.exe 如何执行 C# 应用程序。 当我在谷歌搜索时,我开始了解 csc.exe、PE 文件、JIT、IL 文件。 msbuild.exe 在内部调用 csc.exe 来编译
我是一名优秀的程序员,十分优秀!