2

我正在尝试在 C 中连接相同的矩阵,我想到的唯一想法是加法,但它不起作用。例如,如果我有:{1,1;2,2},我的新矩阵应该是{1,1,1,1;2,2,2,2}。我想将行数加倍。我用谷歌搜索,但我没有找到任何东西。

这是我的代码:

 matrix2=realloc(matrix1,sizeof(int*)*(row));
 int i,j;
 for(i=0;i<row;i++){
   for(j=0;j<col;j++){    
    matrix2[i][j]=matrix1[i][j]+matrix1[i][j];
   }
 }
4

3 回答 3

2

使用我在下面提供的伪代码。请注意,对于 C99 之前的任何 C,您不能用int matrix[2*W][H](如果 W 和 H 不是#defines)实例化数组

Given matrix1 and matrix 2 of equal W,H
make matrix3 of 2*W,H
for h to H
    for i to W
        matrix3[h][i] = matrix1[h][i]
        matrix3[h][i+W] = matrix2[h][i]

制作矩阵需要每行 1 个 malloc,加上 1 个 malloc 来存储行指针数组。

请注意您将如何在循环中需要 2 个作业,而不是之前的作业。这是因为你设置在两个地方。

于 2013-03-04T17:17:43.110 回答
1

你听起来像你有像matlab这样的高级语言的背景。在 C 中,加号运算符不连接矩阵。这将添加矩阵中的值并将新值存储到新矩阵中。

于 2013-03-04T17:19:02.510 回答
1

这里我们将输入矩阵复制到一个新矩阵中两次

for(int i = 0; i < m; i++){for(int j = 0; j < n;j++) { mat2[i][j] = mat[i][j];}}

for(int i = 0 ; i < m ; i++){for(int j = n; j < (2*n) ; j++){ mat2[i][j] = mat[i][jn];}}

于 2013-03-04T17:37:35.700 回答