C ++不同大小的乘法矩阵

时间:2013-09-18 23:52:43

标签: c++ matrix-multiplication

我有一个错误检查器已经确定第一个矩阵的列==第二个矩阵的行,所以我知道它们可以相乘,但我无法弄清楚如何工作它以便我可以繁殖各种大小的矩阵,如[3x2] * [2x5]。这就是我所拥有的:

Matrix Matrix::MultMatrices(Matrix A, bool& error){
if(error){
    cout <<"Unable to multiply these matrices";
    cout <<endl;
}

//Set dimensions for product matrix
int nRows=this->getRows();
int nCols=A.getCols();

Matrix prod(nRows, nCols);
int product;

//first two loops navigate prod Matrix for placement of answers
for(int i=0; i<nRows; i++){
    for(int j=0; j<nCols; j++){


        prod.setElement(i, j, product);
    }
}

return prod;
}

如果我有另外两个循环,我每次都可以通过循环找到产品和 setElement ...会起作用吗?

1 个答案:

答案 0 :(得分:0)

首先,您有责任设置错误:

int commonSize = getCols();
if( A.getRows() != commonSize ) {
    error = true;
    return *this;
}
error = false;

其次,那里有一个缺少的内循环:

for(int i=0; i<nRows; i++){
    for(int j=0; j<nCols; j++){
        int product = 0;
        for(int k=0; k<commonSize; k++){
            product += getElement(i, k) * A.getElement(k, j);
        }
        prod.setElement(i, j, product);
    }
}