簡體   English   中英

Java程序通過調用C代碼來實現多種矩陣

[英]Java program to mulitiply matrices by calling C code

所以我對這個概念很感興趣。 我在C和Fortran編程方面有豐富的經驗,但幾乎沒有Java經驗。 能夠調用C代碼(甚至C ++)在Java代碼中乘以矩陣是否可行?

我的想法在概念上是這樣的

public class MatrixMultiplication
{
    public static void main(String[] args)
    {
        // Parameters
        int MATRIX_SIZE_M = 5000;
        int MATRIX_SIZE_N = 5000;

        // Allocate matrices for multiplication
        double matrixA[][] = new double[MATRIX_SIZE_M][MATRIX_SIZE_N];
        double matrixB[][] = new double[MATRIX_SIZE_N][MATRIX_SIZE_M];
        double matrixC[][] = new double[MATRIX_SIZE_M][MATRIX_SIZE_N];

        // Initialize matrices
        ...

        // Call C code here to multiply C=A*B
        ...

        // Do some other stuff with A, B, and C
        ...
    }
}

如果能夠做到這一點,下一步將是調用MKL進行線性代數計算,這將非常酷。

思考?

調用C代碼將矩陣相乘是否可行

你能做到嗎? 是的你可以。 我不太了解您為什么需要這么做。 您可以非常輕松地在Java中將矩陣相乘。

int aLength = A[0].Length; // A Column Length
int bRowLength = B.Length;    // B Row Length
int newRowL = A.Length;    // m result rows length
int newColL = B[0].Length; // m result columns length
double[][] matrixC = new double[newRowL][newColL];

if(aLength == bRowLength)
{ 

    for( int i = 0; i < newRolL; i++)
        for(int j = 0; j < newColL; j++)
            for(int k = 0; k < aLength; k++)
                 matrixC[i][j] += A[i][k] * B[k][j];
}

return matrixC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM