转置32x64矩阵 if(N==64&&M==32){ 国际一,j,C[M][M],CC[M][M],D[M][M],DD[M][M];; //得到矩阵的左半部分,然后转置 对于(i=0;i

转置32x64矩阵 if(N==64&&M==32){ 国际一,j,C[M][M],CC[M][M],D[M][M],DD[M][M];; //得到矩阵的左半部分,然后转置 对于(i=0;i,c,matrix,transpose,C,Matrix,Transpose,转置32x64矩阵 if(N==64&&M==32){ 国际一,j,C[M][M],CC[M][M],D[M][M],DD[M][M];; //得到矩阵的左半部分,然后转置 对于(i=0;i

转置32x64矩阵
if(N==64&&M==32){
国际一,j,C[M][M],CC[M][M],D[M][M],DD[M][M];;
//得到矩阵的左半部分,然后转置
对于(i=0;i对于(i=M;i在声明矩阵时
int i,j,C[M][M],CC[M][M],D[M][M],DD[M][M];
您使用的是大小
M
而M是32,那么它怎么可以接受64个值呢?它将仅是
32 x 32
矩阵。如果不成功,它会做什么?使用
C[j][i]=A[i][j];
简单地获得转置。
if(N == 64 && M == 32) {

    int i, j, C[M][M], CC[M][M], D[M][M], DD[M][M];

    // get left half of the matrix, and transpose
    for (i = 0; i < M; i++) {
        for (j = 0; j < M; j++) {
            C[i][j] = A[i][j];
        }
    }
    squareblocktranspose(M, M, C, CC, 4);

    // get right half of the matrix, and transpose
    for (i = 0; i < M; i++) {
        for (j = M; j < N; j++) {
            D[i][j-M] = A[i][j];
        }
    }
    squareblocktranspose(M, M, D, DD, 4);

    // put transposed left half of the matrix as top half of new matrix
    for (i=0; i < M; i++) {
        for (j = 0; j < M; j++) {
            B[i][j] = CC[i][j];
        }
    }

    // put transposed right half of the matrix as bottom half of the old matrix
    for (i=M; i<N; i++) {
        for (j = 0; j < M; j++) {
            B[i][j] = DD[i-M][j];
        }
    }
}