void BaseOfSupport::buildA(const Eigen::MatrixXd& Ci, const Eigen::MatrixXd& Q, const Eigen::MatrixXd& T){
    // Create first column of Aeq
    Eigen::MatrixXd AColumn(Ci.rows()*_miqpParams.N, T.cols());
    for (unsigned int i=0; i<_miqpParams.N; i++){
        AColumn.block(i*Ci.rows(), 0, Ci.rows(), T.cols()) = Ci * Q.pow(i) * T;
    }
    // Shift AeqColumn into every column of Aeq to take the form of a lower diagonal toeplitz matrix
    unsigned int j=0;
    while (j<_miqpParams.N){
        _A.block(j*Ci.rows(), j*T.cols(), Ci.rows()*(_miqpParams.N-j), T.cols()) = AColumn.topRows((_miqpParams.N-j)*Ci.rows());
        j=j+1;
    }
    OCRA_INFO("Built A");
}