学习二维动态数组指针做矩阵运算的方法

2020-01-06 13:36:10王旭
  • {  for(int j=0; j<pMat1->nCol; ++j) 
  • {  *(pMat3->pData + i * pMat3->nCol + j) = *(pMat1->pData + i * pMat1->nCol + j) - *(pMat2->pData + i * pMat1->nCol + j); 
  • }  } 
  • return OK;   } 
  • else  { 
  • printf("Not Sub!n");  return NG; 
  • }   
  • }   
  • /* Matrix clear */  void MATClear(MAT* pMat) 
  • {  for(int i=0; i<pMat->nRow; ++i) 
  • {  for(int j=0; j<pMat->nCol; ++j) 
  • {  *(pMat->pData + i * pMat->nCol + j)=0; 
  • }  } 
  • }   
  • /* Matrix multiplication C function */  void MATMulC (MAT* pMat, int C) 
  • {  for(int i=0; i<pMat->nRow; ++i) 
  • {  for(int j=0; j<pMat->nCol; ++j) 
  • {  *(pMat->pData + i * pMat->nCol + j) = C * (*(pMat->pData + i * pMat->nCol + j) ); 
  • }  } 
  • }   
  • /* Matrix multiplication function */  int MATMul (const MAT* pMat1, const MAT* pMat2, MAT* pMat3) 
  • {  MATAlloc(pMat3, pMat1->nRow, pMat2->nCol); 
  • if(pMat1->nCol == pMat2->nRow)  { 
  • for(int i=0; i<pMat1->nRow; ++i)  { 
  • for(int j=0; j<pMat2->nCol; ++j)  { 
  • for(int k=0; k<pMat1->nCol; ++k)  { 
  • *(pMat3->pData + i * pMat2->nCol+j) += *(pMat1->pData + i * pMat2->nRow + k) * (*(pMat2->pData + k * pMat2->nCol + j) );  } 
  • }  } 
  • return OK;   } 
  • else  { 
  • printf("not Muln");  return NG;