2012-04-12 73 views
1

我正在写一个使用大量矩阵计算的Java程序,并且在进行某些计算时,我会在进一步计算之前使用多个临时“存储”矩阵。2维数组初始化和用法

我已经宣布在类变量临时矩阵,这样

private double[][] intermediateMatrixA; private double[][] intermediateMatrixB; private double[][] intermediateMatrixC; private double[][] intermediateMatrixD;

但是,我从来没有初始化在构造函数或方法的矩阵中的intermediateMatrix = new double[][]形式。 相反,我正在为每个临时矩阵做这件事intermediateMatrix = [the product of a matrix calculation]

我的问题:我使用安全baring记住临时数组的方法将在其他计算中重用?每次我声明我的一个临时矩阵应该等于另一个阵列时,它将等于该矩阵的确切维数和值?

预先感谢 问候 迈克

+0

我不清楚这是如何工作的 - 如果你可以发布更多的代码,我可以更确定。但这就是我要告诉你的:你无法从无到有。如果您要矩阵相乘,则需要在某处创建一个新的double [] []来存储新值。 – ControlAltDel 2012-04-12 19:14:07

+0

我强烈建议你去和谷歌的JAMA矩阵包 - 矩阵数学很难,因为它是没有写你自己的图书馆。 – ControlAltDel 2012-04-12 19:15:10

回答

0

是的,它是从你上面的变量,将指向你的方法或计算,行和列的结果的方式“安全”将被保留。

private double[][] intermediateMatrixA = new double[3][4]; 
//etc etc 
intermediateMatrixA =new double[5][6]; 

完全没问题,只要它总是double[][];跟踪行和列的逻辑是由你自己决定的。

您可以将double[][]的类型分配给其他类型的double[][],但不是double[]double[][]

如果您打算一再使用它们,我建议您在分配它们之前将它们设置为空,以防万一。