繁体   English   中英

转置矩阵会导致错误的输出

[英]Transposing a matrix results in wrong output

我正在尝试将 4 x 5 矩阵转置为 5 x 4 矩阵。 这是我到目前为止所做的:

#include <stdio.h>

void transposeMatrix(int A2[4][5],int A1[5][4])
{
    int i, j;

    for (i = 0; i < 5; ++i){
        for (j = 0; j < 4; ++j)
            A1[j][i]=A2[i][j];
    }
}

int main(void)
{
    int A2[4][5] = {
        { 7, 4, 2, 1, 12 },
        { 4, 6, 22, 11, 6 },
        { 12, 10, 3, 1, 2 },
        { 20, 4, 1, 3, 4 },
    };
    int A1[5][4];
    int i, j;

    printf("Original matrix:\n ");
    for (i = 0; i < 4; ++i){
        for (j = 0; j < 5; ++j)
            printf("%5i", A2[i][j]);
        printf("\n");
    }

    printf("Transposed matrix:\n");
    transposeMatrix(A2, A1);
    for (i = 0; i < 5; ++i){
        for (j = 0; j < 4; ++j)
            printf("%5i", A1[i][j]);
        printf("\n");
    }
    return 0;
}

当我运行我的代码时,这就是我得到的:

Original matrix:
     7    4    2    1   12
    4    6   22   11    6
   12   10    3    1    2
   20    4    1    3    4
Transposed matrix:
    7    4   12   20
-858993460    6   10    4
998952744   22    3    1
11599080   11    1    3
10495049-858993460-858993460-858993460

看起来它只转置了第一行。 我究竟做错了什么?

您的代码中有一个错误。

它是transpose函数中的一个索引问题。

for (i = 0; i < 5; ++i){
    for (j = 0; j < 4; ++j)
        A1[i][j]=A2[j][i];
}

而不是A1[j][i]=A2[i][j]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM