Objective-C中的矩阵
在Objective-C中是否有矩阵支持类?我所说的矩阵是指二维阵列 我现在所做的是使用2个Objective-C中的矩阵,objective-c,multidimensional-array,matrix,Objective C,Multidimensional Array,Matrix,在Objective-C中是否有矩阵支持类?我所说的矩阵是指二维阵列 我现在所做的是使用2个NSArrays,一个在另一个中。这工作得很好,但我的代码看起来一团糟 我还尝试在彼此之间使用C样式的数组(matrix[][]),但这种方法不适合我的应用程序,因为我无法自动合成@synthesis或为它们指定@properties) 我当然可以为此创建自己的类,但我想知道的是Objective-C是否已经为这种情况提供了一些功能。我做了一些谷歌调查,但没有发现任何东西。我认为您需要对NSArray进行
NSArray
s,一个在另一个中。这工作得很好,但我的代码看起来一团糟
我还尝试在彼此之间使用C样式的数组(matrix[][]
),但这种方法不适合我的应用程序,因为我无法自动合成@synthesis
或为它们指定@properties
)
我当然可以为此创建自己的类,但我想知道的是Objective-C是否已经为这种情况提供了一些功能。我做了一些谷歌调查,但没有发现任何东西。我认为您需要对NSArray进行子类化或使用一些非甜语法:[
MyArray objectAtIndex:I*d+j]
。后一种情况很麻烦,因为你只会得到一个笨拙的枚举器。不,基金会没有任何2D数组类。就数学计算而言,为了便于携带和性能原因,通常在C或C++中实现矩阵。如果您真的需要,您必须为此编写自己的类。
似乎obj-c没有自己的矩阵结构。我参考了iOS SDK的CATTransform3D,发现它使用: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变换矩阵。晚会晚了,但我想提一下,它实现了一个基于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子类化。我的目标是使用坐标(比如x和y)访问它。无论如何,谢谢你的回答。