我正在尝试在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];
}
}
答案 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];}}