Objective-C中的矩阵

时间:2011-11-27 05:59:18

标签: objective-c multidimensional-array matrix

Objective-C中是否有Matrix支持类?按矩阵我的意思是2D阵列。

我现在所做的是使用2 NSArray,一个在另一个内。这很好用,但我的代码看起来很乱。

我还试图在彼此之间使用C风格的数组(matrix[][]),但这种方法不适合我的应用程序,因为我不能自动@synthesize或指定@properties它们。

我当然可以为此创建自己的类,但我想知道的是,Objective-C是否已经为这种情况提供了一些东西。我做了一些谷歌研究,但没有找到任何东西。

4 个答案:

答案 0 :(得分:4)

Nope,Foundation没有任何2D数组类。就数学计算而言,由于可移植性和性能原因,矩阵通常用C或C ++实现。如果你真的需要的话,你必须为此编写自己的课程。

答案 1 :(得分:1)

似乎obj-c没有自己的矩阵结构。我提到了iOS SDKs CATransform3D,发现它使用:

struct CATransform3D
{
    CGFloat m11, m12, m13, m14;
    CGFloat m21, m22, m23, m24;
    CGFloat m31, m32, m33, m34;
    CGFloat m41, m42, m43, m44;
};

typedef struct CATransform3D CATransform3D;

作为3D变换矩阵。

答案 2 :(得分:1)

晚会,但我想提一下this project,它实现了一个基于C数组的灵活Matrix类,具有许多BLAS和LAPACK函数的接口。 免责声明:我是开发人员。

基本用法如下:

YCMatrix *I = [YCMatrix identityOfRows:3 Columns:3];
double v = [I getValueAtRow:1 Column:1];
[I setValue:0 Row:0 Column:0];

答案 3 :(得分:-2)

我认为你需要继承NSArray或使用一些非甜蜜的语法:[MyArray objectAtIndex:i*d+j]。后一种情况真的很麻烦,因为你只会得到一种笨拙的调查员。