在C中连接两个矩阵

时间:2013-03-04 17:06:20

标签: c matrix

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

这是我的代码:

 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];
   }
 }

3 个答案:

答案 0 :(得分:2)

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

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次分配。这是因为你在两个地方设置。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

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