gpt4 book ai didi

objective-c - 在 C 中对复数执行矩阵运算

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:50 25 4
gpt4 key购买 nike

我正在尝试执行涉及矩阵运算和复杂数学的计算 - 有时在 C 中一起进行。我非常熟悉 Matlab,并且我知道可以简单有效地执行这些类型的计算。例如,两个大小相同的矩阵 A 和 B,每个矩阵都具有复数值的元素,可以通过表达式 A+B 轻松求和。是否有任何包或技术可以推荐使用 C 或 Objective C 对这些类型的表达式进行编程?我知道 complex.h 允许对复数执行操作,但我不知道如何对复杂矩阵执行操作,这正是我真正想要的。同样,我知道允许对矩阵进行操作的包,但不认为它们对处理复杂矩阵有用。

最佳答案

您想使用 BLAS用于基本的线性代数运算,例如对两个矩阵求和或相乘,而 LAPACK 用于计算量更大的算法,例如因式分解矩阵。

BLAS 例程的名字很有趣,看起来像字母汤。这是因为旧 Fortran 对函数名长度的限制。名称的第一个字母表示 BLAS 例程所操作的数据类型。由于您对复数感兴趣,因此您希望查看以 c(对于复数单精度)或 z(对于 zouble 复数 double )开头的例程。例如,将复矩阵 AB 相乘的 BLAS 例程是 CGEMMZGEMM(这里是 GEMM 代表一般矩阵矩阵乘法。)

看起来在 Objective C 中,BLAS 可以通过 Accelerate 获得。框架。命名约定是将 cblas_ 添加到原始 BLAS 名称之前。例如这里是 documentation对于 cblas_zgemm

通常,供应商会为其平台提供优化版本的 BLAS。这些套路通常可以比这些矩阵运算的简单实现快得多。经常一台机器的峰值浮点性能可以达到,或者接近达到,用这些套路。事实上,LINPACK 基准(LINPACK 是 LAPACK 的前身)使用这些对 super 计算机进行基准测试和排名的例程。

关于objective-c - 在 C 中对复数执行矩阵运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7683080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com