Matrix 有人能帮我用这个矩阵乘矩阵的密码吗?
这是我写的代码,我试过了,但它只适用于相同长度的矩阵,它应该适用于第一个矩阵的列和第二个矩阵的行Matrix 有人能帮我用这个矩阵乘矩阵的密码吗?,matrix,Matrix,这是我写的代码,我试过了,但它只适用于相同长度的矩阵,它应该适用于第一个矩阵的列和第二个矩阵的行 void msklret(int matrixA[M][N],int matrixB[M][N],int matrixC[M][N],int r1,intc2,int r2) { inti,j,k,sum; 对于(i=0;i,假设您正在寻找朴素算法: 这是用c写的# 也可以写成: float[,] result = MatrixMultiply(matrixA,MatrixMultipl
void msklret(int matrixA[M][N],int matrixB[M][N],int matrixC[M][N],int r1,intc2,int r2)
{
inti,j,k,sum;
对于(i=0;i,假设您正在寻找朴素算法:
这是用c写的#
也可以写成:
float[,] result = MatrixMultiply(matrixA,MatrixMultiply(matrixB,matrixC));
给出了矩阵乘法的结合性质
public float[,] MatrixMultiply(float[,] leftMat, float[,] rightMat)
{
// get the required row and column ranks for both matrices
int leftRowNum = leftMat.GetLength(0);
int rightRowNum = rightMat.GetLength(0);
int leftColNum = leftMat.GetLength(1);
int rightColNum = rightMat.GetLength(1);
// Check that the inner dimensions are the same
if(leftColNum != rightRowNum)
return null;
int innerLen = leftColNum;
// now define resulting matrix dimensions
float[,] result = new float[leftRowNum,rightColNum];
// perform the multiplication using 3 nested for loops
for(int i = 0; i < leftRowNum; i++)
{
for(int j = 0; j < rightColNum; j++)
{
for(int inner = 0; inner < innerLen; inner++)
{
result[i,j]+= leftMat[i,inner]*rightMat[inner,j];
}
}
}
return result;
}
void msklret(int matrixA[M][N],int matrixB[M][N],int matrixC[M][N],int r1,intc2,int r2)
float[,] result = MatrixMultiply(MatrixMultiply(matrixA,matrixB),matrixC);
float[,] result = MatrixMultiply(matrixA,MatrixMultiply(matrixB,matrixC));