C++ 函数:实现矩阵相乘
C++ 函数:实现矩阵相乘
本文介绍一个用于计算两个矩阵相乘的 C++ 函数。我们可以使用该函数计算任意行列数的矩阵。
函数定义
函数接受两个二维数组作为参数,并返回一个新的二维数组,表示两个矩阵的乘积。函数定义如下:
int** matrixMultiply(int** matrixA, int** matrixB, int rowA, int colA, int rowB, int colB){
//函数体
}
其中,matrixA 和 matrixB 分别表示两个矩阵,rowA、colA 和 rowB、colB 分别表示两个矩阵的行数和列数。
函数实现
下面是一个简单的实现示例。该函数会动态分配内存来存储结果矩阵,并在计算完成后释放该内存。
int** matrixMultiply(int** matrixA, int** matrixB, int rowA, int colA, int rowB, int colB){
//检查矩阵是否可相乘
if(colA != rowB){
return nullptr;
}
//动态分配内存
int** result = new int*[rowA];
for(int i=0; i<rowA; i++){
result[i] = new int[colB];
}
//计算矩阵乘积
for(int i=0; i<rowA; i++){
for(int j=0; j<colB; j++){
int sum = 0;
for(int k=0; k<colA; k++){
sum += matrixA[i][k] * matrixB[k][j];
}
result[i][j] = sum;
}
}
//返回结果矩阵
return result;
}
使用示例
我们可以使用以下代码来调用函数并打印结果:
int main(){
//定义两个示例矩阵
int rowA = 2, colA = 3;
int** matrixA = new int*[rowA];
for(int i=0; i<rowA; i++){
matrixA[i] = new int[colA];
}
matrixA[0][0] = 1;
matrixA[0][1] = 2;
matrixA[0][2] = 3;
matrixA[1][0] = 4;
matrixA[1][1] = 5;
matrixA[1][2] = 6;
int rowB = 3, colB = 2;
int** matrixB = new int*[rowB];
for(int i=0; i<rowB; i++){
matrixB[i] = new int[colB];
}
matrixB[0][0] = 7;
matrixB[0][1] = 8;
matrixB[1][0] = 9;
matrixB[1][1] = 10;
matrixB[2][0] = 11;
matrixB[2][1] = 12;
//计算矩阵乘积并打印结果
int** result = matrixMultiply(matrixA, matrixB, rowA, colA, rowB, colB);
for(int i=0; i<rowA; i++){
for(int j=0; j<colB; j++){
cout << result[i][j] << " ";
}
cout << endl;
}
//释放内存
for(int i=0; i<rowA; i++){
delete[] matrixA[i];
}
delete[] matrixA;
for(int i=0; i<rowB; i++){
delete[] matrixB[i];
}
delete[] matrixB;
for(int i=0; i<rowA; i++){
delete[] result[i];
}
delete[] result;
return 0;
}
输出结果为:
58 64
139 154
原文地址: https://www.cveoy.top/t/topic/ljyX 著作权归作者所有。请勿转载和采集!