在Objective-C中有任何支持矩阵的类吗?我所说的矩阵是指二维数组。
我现在做的是使用2个NSArray
s,一个在另一个里面。这工作得很好,但我的代码看起来像一团乱。
我也尝试在彼此(matrix[][]
)中使用c风格的数组,但这种方法不适合我的应用程序,因为我不能自动@synthesize
或为它们指定@properties
。
不,Foundation没有任何2D数组类。就数学计算而言,出于可移植性和性能的考虑,矩阵通常是用C或c++实现的。如果你真的需要的话,你必须自己写一个类。
obj-c似乎没有自己的矩阵结构。我参考了iOS SDK的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;
为三维变换矩阵。
来得太晚了,但我想提一下这个项目,它实现了一个基于C数组的灵活矩阵类,具有许多BLAS和LAPACK函数的接口。免责声明:我是开发者。
基本用法如下:
YCMatrix *I = [YCMatrix identityOfRows:3 Columns:3];
double v = [I getValueAtRow:1 Column:1];
[I setValue:0 Row:0 Column:0];
我认为你将需要子类化NSArray或使用一些非甜蜜的语法:[MyArray objectAtIndex:i*d+j]
]。后一种情况确实很麻烦,因为您只会得到一种笨拙的枚举器。