YCMatrix 0.6.6

YCMatrix 0.6.6

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2016年3月

Ioannis Chatzikonstantinou 维护。



YCMatrix 0.6.6

  • 作者:
  • Ioannis Chatzikonstantinou

DOI

这是一个灵活的用于 Objective-C 和 Swift 的 Matrix 库,通过 Accelerate 框架接口实现 BLAS、LAPACK 和 vDSP 函数。

YCMatrix 可用于 OS X(10.7+)以及 iOS(8.0+)。

入门指南

将框架添加到您的项目中

将项目导入到您的工作空间中,或直接在 XCode 中打开框架项目,构建并导入产品。

或者,您只需将 (.h 和 .m) 文件拖放到项目中即可,这样就可以轻松完成了。

导入

YCMatrix 定义了一个模块,因此在新版本的 XCode 中,您可以使用以下方式导入框架

@include YCMatrix;

或者,您也可以这样做

#import "YCMatrix/YCMatrix.h"

依赖性

除了系统框架(特别是 Foundation.framework 和 Accelerate.framework)之外,YCMatrix 没有其他依赖。

Podfile

platform :osx, '10.7'
pod "YCMatrix"

用法

命名规范

返回新 Matrix 实例的方法通常以 "matrixFrom" 为前缀,例如 -matrixFromSubtraction: 。不改变接收方的位置的方法没有前缀。在某些情况下,例如矩阵矩阵乘法,即使结果是新的 Matrix 实例,方法名中也可能不包括前缀。

示例

下面的片段是一个基本的矩阵乘法示例。它还展示了如何使用预定义的值轻松创建矩阵。

@include YCMatrix;

Matrix *I = [Matrix identityOfRows:3 columns:3]; // 3x3 Identity
Matrix *C = [Matrix matrixOfRows:3 columns:3 value:2]; // 3x3 filled with 2s
Matrix *S = [I matrixByAddition:C]; // Outputs a new matrix
NSLog(@"Result:\n%@", S);

// Result:
// 3.0  2.0  2.0
// 2.0  3.0  2.0
// 2.0  2.0  3.0

里面有什麽?

框架功能分为四个文件:基类定义和三个类别

  • Matrix.h:YCMatrix 类定义和基本操作。
  • Matrix+Advanced.h:高级 LAPACK 函数的接口。
  • Matrix+Manipulate.h:用于操作行、列等的函数。
  • Matrix+Map.h:用于线性映射矩阵的函数。

此外,还有一个文件实现与包含矩阵的 NSArrays 相关的功能。

请参阅 文档 了解每个类别的完整功能概述。

此外,YCMatrix包含众多单元测试。测试分为六个文件。

  • YCMatrixTests:与矩阵相关的一般测试。
  • YCMatrixAdvancedTests:与高级操作(分解、逆矩阵等)相关的测试。
  • YCMatrixManipulateTests:与矩阵操作相关的测试。
  • YCMatrixMapTests:与线性映射操作相关的测试。
  • YCMatrixNSArrayTests:与NSArray类别相关的测试。
  • YCMatrixPerformanceTests:针对各种操作性能测量测试。

性能

YCMatrix从底座打造起就考虑了性能。整个框架广泛使用了vDSP、BLAS和LAPACK。此外,初始化和复制过程中的内存分配也高度重视。

测试文件YCMatrixPerformanceTests.m包含一些使用不同的加法/减法实现(vDSP、BLAS和纯C)的基准测试。

许可协议

YCMatrix

版权所有©2013 - 2016 Ioannis (Yannis) Chatzikonstantinou。保留所有权利。http://yconst.com

在此,任何人免费获得此软件及相关文档文件(“软件”)副本,经许可无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可 và/或出售该软件的副本,并允许向软件提供者提供软件的人员做上述事情,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权或任何其他行为中产生、产生于或与软件或软件的使用或任何其他处理有关。

致谢

此软件依赖于以下受版权保护的材料,对其实际使用表示认可。


soboldata.h 和 sobolseq.c 是 NLOpt 软件的一部分

版权所有©2007 马萨诸塞理工学院

在此,任何人免费获得此软件及相关文档文件(“软件”)副本,经许可无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可 và/或出售该软件的副本,并允许向软件提供者提供软件的人员做上述事情,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权或任何其他行为中产生、产生于或与软件或软件的使用或任何其他处理有关。


haltondata.cpp

版权所有©2012 Leonhard Gruenschloss ([email protected])

在此,任何人免费获得此软件及相关文档文件(“软件”)副本,经许可无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可 và/或出售该软件的副本,并允许向软件提供者提供软件的人员做上述事情,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。

软件按“原样”提供,不提供任何形式的保证,明示或暗示的,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论是在合同行为、侵权或任何其他行为中产生、产生于或与软件或软件的使用或任何其他处理有关。


使用 LAPACK 计算列主矩阵A奇异值分解的过程

作者:Luke Lonergan 日期:5/31/08 许可:允许免费使用