问题标签 [hmatrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
73 浏览

haskell - 如何将 R 转换为 C?

如何将 a 转换Numeric.LinearAlgebra.Static.R为 a Numeric.LinearAlgebra.Static.C(所有虚部为零?)。

听起来像是一个直截了当的问题,但据我所知,所有map-like函数都具有与输出字段相同的输入。例如:

这使得无法从 转换RC

我想我只是在这里遗漏了一些东西?

0 投票
1 回答
116 浏览

haskell - Haskell中可变非整数类型的可变列表

我正在尝试从二进制文件中解析一个巨大的复杂值的 3d 数据数组。稍后这应该成为l矩阵 ( n x m)。由于我要处理这些矩阵,因此我仅限于矩阵库 - hmatrix 似乎很有希望。数据布局不是我要求的格式,所以我必须在 position 中跳来跳去(i,j,k) -> (k,i,j),其中ij是 的元素nmk元素l

我认为阅读这个的唯一方法是我使用可变变量,否则我最终会得到几个太字节的垃圾。我的想法是使用盒装互数组或互矩阵向量(来自 Numeric.LinearAlgebra.Devel 的 STMatrix),所以我最终得到如下结果:

但我不确定如何正确使用它们:我可以通过 modify 修改 MVector 的一个元素:

或使用 modifyM (奇怪:堆栈向量-0.12.3.0 中没有 modifyM...)

所以我可以使用函数调用(a -> a)runST 例程来修改 SMatrix。我不确定,是否应该将 ST 放入 IO(?)

尽管如此 - 我认为,这应该有效,但只有在我想修改整个矩阵时才有用,调用这个(a->a)-routine n x m x l- 时间会有点开销(也许它会被优化出来......)。所以我最终会在编组数组时通过指针修改内容(i,j,k) -> (k,i,j)并逐个矩阵读取所有内容 - 但这感觉不对,我想避免这种肮脏的技巧。

你有什么想法可以做到这一点,但更...干净?泰

编辑: 感谢 KA Buhr。他的解决方案到目前为止有效。现在,我只是遇到了一些性能影响。如果我比较解决方案:

使用最简单的 C 代码:

使用 -O2 编译的两者都给出了以下性能猜测:

对比

这大约是每个核心性能的 2 个数量级。从分析中我了解到

是昂贵的功能。由于我将在类似分钟的间隔中使用此过程,因此我希望将解析时间保持在与磁盘访问时间一样低的时间。我会看看,如果我能加快这个速度

PS:这是一些测试,如果我可以将通常的 DSP 从 C 类移动到 Haskell

Edit2: 好的,这是我尝试总和后得到的:

它给出了一些关于:

,所以比 C 代码慢 4 倍。我想我可以忍受这个。我想,我正在用这段代码破坏向量的所有流功能。如果有任何建议可以让它们以可比的速度返回,我将不胜感激!

0 投票
1 回答
127 浏览

windows - 如何在 Windows 10 下使用 hmatrix 正确构建 cabal 项目?

使用 Windows 10 64 位、Cabal-3.4.0.0、ghc-8.10.7。我使用命令在 MSYS2 环境中安装了 OpenBLAS pacman -S mingw-w64-x86_64-openblas。比,我用命令成功安装了 hmatrix-0.20.2

我正在尝试使用cabal build cabalhmatrixMain构建简单的测试项目

但现在我得到了输出

我应该怎么做才能正确构建该软件包?我想我需要--flags=openblas --extra-include-dirs="C:\\ghcup\\msys64\\mingw64\\include\\OpenBLAS" --extra-lib-dirs="C:\\ghcup\\msys64\\mingw64\\bin" --extra-lib-dirs="C:\\ghcup\\msys64\\mingw64\\lib"在编译期间以某种方式将参数传递给 hmatrix,但不知道该怎么做。老实说,我不明白这些参数(cabal、ghc、ghc-pkg 或其他)究竟是什么程序,以及为什么 cabal 试图再次安装 hmatrix。我在目录中看到 hmatrix "C:\cabal\store\ghc-8.10.7\hmatrix-0.20.2-e917eca0fc7690010007a19f4f2a3602d86df0f0"


创建的cabal.project文件:

在将libopenblas.dll位置添加到PATH变量 cabal 项目后,它正在工作。

0 投票
0 回答
12 浏览

matlab - 从给定的边缘分布生成 LDPC 奇偶校验矩阵(不规则)

从 MATLAB 中的给定边缘分布生成 LDPC 奇偶校验矩阵(不规则)的步骤是什么?

假设我有变量节点和校验节点的以下信息:

我知道它们显示了连接到节点的边的分数,但我不知道如何使用它们来模拟 MATLAB 中的 H 矩阵。任何人都可以帮助我,了解这个过程吗?