当前位置: 首页>>代码示例>>C++>>正文


C++ Matrix::getNumberOfColumns方法代码示例

本文整理汇总了C++中linalg::Matrix::getNumberOfColumns方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix::getNumberOfColumns方法的具体用法?C++ Matrix::getNumberOfColumns怎么用?C++ Matrix::getNumberOfColumns使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在linalg::Matrix的用法示例。


在下文中一共展示了Matrix::getNumberOfColumns方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: A

void restrictedOptimizationHandler::simplex<Type>::simplexOptimization(const LinAlg::Matrix<Type> &c,
                                                                       const LinAlg::Matrix<Type> &A,
                                                                       const LinAlg::Matrix<Type> &b,
                                                                       LinAlg::Matrix<Type> &B,
                                                                       LinAlg::Matrix<Type> &N)
{
//    %% selecione uma base B e calcule B^-1
    LinAlg::Matrix<Type> An = A(from(1)-->A.getNumberOfRows(),N);
    LinAlg::Matrix<Type> Ab = A(from(1)-->A.getNumberOfRows(),B);
//    std::cout << N << "\n";
    LinAlg::Matrix<Type> Abinv = LinAlg::inv_numeric(Ab);
//    LinAlg::Matrix<Type> Abinv = (Ab^-1);
    LinAlg::Matrix<Type> xb;
//    %% Verifique o vetor dos custos reduzidos
    for(unsigned terminate = 1; terminate <= 100; ++terminate)
    {
        LinAlg::Matrix<Type> cn = c(N,1);
        LinAlg::Matrix<Type> cb = c(B,1);
        LinAlg::Matrix<Type>An = A(from(1)-->A.getNumberOfRows(),N);
        Ab = A(from(1)-->A.getNumberOfRows(),B);
        LinAlg::Matrix<Type> r = (~cn) - (~cb)*Abinv*An;
        this->cost = ((~cb)*Abinv*b)(1,1);
        xb = Abinv*b;
        unsigned contFlag = 0;
        for (unsigned i=1; i <= r.getNumberOfColumns(); ++i)
           if(r(1,i) >= 0)
           {
               contFlag = contFlag + 1;
//%               break;
           }
        if(contFlag == r.getNumberOfColumns())
            break;
        //%determine o vetor de chegada
        unsigned indMinD = LinAlg::lineOfMinValue(~r);

        this->x = Abinv*An(from(1)-->An.getNumberOfRows(),indMinD);
        LinAlg::Matrix<Type> d = LinAlg::divPoint(xb,this->x);
        Type dMin = INFINITY;
        unsigned indMinB = 1;
        for (unsigned i = 1; i <= d.getNumberOfRows(); ++i)
           if(this->x(i,1) > 0 && d(i,1) < dMin)
           {
               dMin = d(i,1);
               indMinB = i;
           }

        Abinv = EscalSimplex((Abinv | xb | this->x),indMinB);
        Type Bout = B(1,indMinB);
        Type Nout = N(1,indMinD);
        N = N(1,from(1)-->(indMinD-1)) | Bout | N(1, from(indMinD+1)-->(N.getNumberOfColumns()));
        B = B(1,from(1)-->(indMinB-1)) | Nout | B(1,from(indMinB+1)-->(B.getNumberOfColumns()));
    }

    this->x = xb || LinAlg::Zeros<Type>(An.getNumberOfColumns(),1);
    LinAlg::Matrix<Type> ind = LinAlg::sortColumnVectorIndices<Type>(B|N);
    this->x = this->x(ind,1);
//    std::cout << "\n\n" << ind << "\n\n";
    N = LinAlg::sortColumnVector<Type>(N);
    B = LinAlg::sortColumnVector<Type>(B);
}
开发者ID:,项目名称:,代码行数:60,代码来源:

示例2: MatrizUni

LinAlg::Matrix<float> SistemasLineares::Gauss(LinAlg::Matrix<float> MatrizUni)
{
    LinAlg::Matrix<float> MatrizGauss;
    //Laço para contagem das colunas de MatrizUni.
    for(unsigned i = 1; i < MatrizUni.getNumberOfColumns(); i++)
    {   //Laço para contagem das linhas de MatrizUni.
        for(unsigned j = i + 1; j <= MatrizUni.getNumberOfRows();  j++)
        {
            float m = MatrizUni(j,i)/MatrizUni(i,i);
            //Laço para contagem das colunas da equação.
            for(unsigned z = i ; z <= MatrizUni.getNumberOfColumns(); z++)
                MatrizUni(j,z) = MatrizUni(j,z) - m*MatrizUni(i,z);
        }
    }

    MatrizGauss = LinAlg::Zeros<float>(1, MatrizUni.getNumberOfRows());
    float R;
    for(unsigned i = 1; i <= MatrizUni.getNumberOfRows(); ++i)
    {
        unsigned k = MatrizUni.getNumberOfRows() - i + 1;
        R = 0;
        for(unsigned j = k + 1; j <= MatrizUni.getNumberOfColumns() - 1; ++j)
                R = R + MatrizUni(k, j) * MatrizGauss(1, j);

        MatrizGauss(1, k) = (MatrizUni(k, MatrizUni.getNumberOfColumns()) - R) / MatrizUni(k, k);
    }
    return MatrizGauss;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:28,代码来源:sistemaslineares.cpp

示例3: MatrizRes

LinAlg::Matrix<float> SistemasLineares::GaussJacobi(LinAlg::Matrix<float> MatrizUni, unsigned MaxIterations)
{
    //Matriz Resposta
    LinAlg::Matrix<float> MatrizRes(MaxIterations, MatrizUni.getNumberOfColumns());
    LinAlg::Matrix<float> C (MatrizUni.getNumberOfRows(), MatrizUni.getNumberOfColumns() - 1);
    LinAlg::Matrix<float> g (MatrizUni.getNumberOfRows(), 1);
    LinAlg::Matrix<float> x0(C.getNumberOfColumns(), 1);

    //    //Deixa o vetor de chute inicial padronizado como vetor linha
    if(this->X0.getNumberOfColumns() < this->X0.getNumberOfRows())
        ~this->X0;

    //    //Insere o chute inicial na Matriz resposta
    for(unsigned i = 1; i < MatrizRes.getNumberOfColumns() - 1; ++i)
        x0(1,i) = this->X0(1,i);

        //Laço para contar as linhas da MatrizUni e Matriz C.
        for(unsigned i = 1; i <= MatrizUni.getNumberOfRows(); ++i)
        {   //Laço para contar as colunas da MAtrizUni e Matriz C.
            for(unsigned j = 1; j < MatrizUni.getNumberOfColumns(); ++j)
            {
                if(i != j)
                    C(i,j) = - MatrizUni(i,j)/MatrizUni(i,i);//Matriz com a diagonal zerada.
            }
            g(i,1) = MatrizUni(i,MatrizUni.getNumberOfColumns()) / MatrizUni(i,i);//Matriz dos termos independentes.
        }

        MatrizRes = ~x0;
        for(unsigned k = 1; k < MaxIterations; ++k)
        {
            x0 =  (C * x0) + g;
            MatrizRes = MatrizRes || ~x0;
        }
    return MatrizRes;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:35,代码来源:sistemaslineares.cpp

示例4: ret

LinAlg::Matrix<Type> LinAlg::Matrix<Type>::operator|| (LinAlg::Matrix<RightType> rhs)
{
    LinAlg::Matrix<Type>ret;

    if(this->mat == NULL)
        ret = rhs;
    else
    {
        unsigned aux = this->rows;

        if(this->columns < rhs.getNumberOfColumns())
            ret.Init(this->rows + rhs.getNumberOfRows(), rhs.getNumberOfColumns());
        else
            ret.Init(this->rows + rhs.getNumberOfRows(), this->columns);

        for(unsigned i = 0; i < this->rows; i++)
            for(unsigned j = 0; j < this->columns; j++)
                ret.mat[i][j] = this->mat[i][j];

        for(unsigned i = 1; i <= rhs.getNumberOfRows(); i++)
            for(unsigned j = 1; j <= rhs.getNumberOfColumns(); j++)
                ret(i + aux, j) = rhs(i, j);
    }

    return ret;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:26,代码来源:matrix.hpp

示例5: Den

void PolynomHandler::Polynom<Type>::setDen(LinAlg::Matrix<Type> Den)
{
    this->den = initPointer<Type>(Den.getNumberOfColumns());
    this->sizeDen = Den.getNumberOfColumns();

    for (unsigned i = 0; i < Den.getNumberOfColumns(); ++i)
        this->den[i] = Den(1,i+1);
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:8,代码来源:polynom.hpp

示例6: Num

void PolynomHandler::Polynom<Type>::setNum(LinAlg::Matrix<Type> Num)
{
    this->num = initPointer<Type>(Num.getNumberOfColumns());
    this->sizeNum = Num.getNumberOfColumns();

    for (unsigned i = 0; i < Num.getNumberOfColumns(); ++i)
        this->num[i] = Num(1,i+1);
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:8,代码来源:polynom.hpp

示例7: temp

LinAlg::Matrix<Type> LinAlg::operator~ (LinAlg::Matrix<Type> mat)
{
    LinAlg::Matrix<Type> temp(mat.getNumberOfColumns(), mat.getNumberOfRows());

    for(unsigned i = 1; i <= mat.getNumberOfRows(); i++)
        for(unsigned j = 1; j <= mat.getNumberOfColumns(); j++)
            temp(j, i) = mat(i, j);

    return temp;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:10,代码来源:matrix.hpp

示例8: initPointer

void PolynomHandler::Polynom<Type>::init(LinAlg::Matrix<Type> Num)
{
    this->sizeNum = Num.getNumberOfColumns();
    this->num = initPointer(Num.getNumberOfColumns());
    for (unsigned i = 0; i < Num.getNumberOfColumns(); ++i)
        this->num[i] = (Type) Num(1, i+1);

    this->sizeDen = 1;
    this->den = initPointer<Type>(1);
    this->den[0] = 1;
    this->x = 'x';

}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:13,代码来源:polynom.hpp

示例9: QCustomPlot

void PlotHandler::plot<Type>::generalPlot(LinAlg::Matrix<Type> X, LinAlg::Matrix<Type> Y)
{
//    centralWidget = new QWidget(this->properties.MainWindow);
//    centralWidget->setGeometry(QRect(this->properties.windowPosX, this->properties.windowPosY, this->properties.windowSizeX, this->properties.windowSizeY));
    customPlot = new QCustomPlot(this->properties.PlotFrame);
    customPlot->setGeometry(QRect(0, 0,this->properties.PlotFrame->geometry().width(), this->properties.PlotFrame->geometry().height()));

    // add title layout element:
    if(this->properties.titleFlag)
    {
        customPlot->plotLayout()->insertRow(0);
        customPlot->plotLayout()->addElement(0, 0, new QCPPlotTitle(this->customPlot, this->properties.title.c_str()));
    }

    if(X.getNumberOfColumns() == Y.getNumberOfColumns() && X.getNumberOfRows() == Y.getNumberOfRows())
    {
        this->properties.rows = X.getNumberOfRows();
        this->properties.columns = X.getNumberOfColumns();
//        this->setLegend();

        QPen pen;
        // add graphs with different scatter styles:
        for (unsigned i = 0; i < this->properties.rows; ++i)
        {
          customPlot->addGraph();
          pen.setColor(QColor(qSin(i*0.3)*100+100, qSin(i*0.6+0.7)*100+100, qSin(i*0.4+0.6)*100+100));
          // generate data:
          QVector<double> x(this->properties.columns), y(this->properties.columns);
          for (unsigned k = 0; k < this->properties.columns; ++k)
          {
            x[k] = X(i+1,k+1);
            y[k] = Y(i+1,k+1);
          }
          customPlot->graph()->setData(x, y);
          customPlot->graph()->rescaleAxes(true);
          customPlot->graph()->setPen(pen);

          if(this->properties.variablesNameFlag)
              customPlot->graph()->setName("Grafico" + QString::number(i+1));

          customPlot->graph()->setLineStyle(QCPGraph::lsLine);

          if(this->properties.xLabelFlag)
              customPlot->xAxis->setLabel(this->properties.xLabel.c_str());
          if(this->properties.yLabelFlag)
              customPlot->yAxis->setLabel(this->properties.yLabel.c_str());
          // set scatter style:
        }
     }
    customPlot->rescaleAxes();
}
开发者ID:,项目名称:,代码行数:51,代码来源:

示例10: ret

LinAlg::Matrix<Type> PolynomHandler::MultPoly(const LinAlg::Matrix<Type> &lhs, const LinAlg::Matrix<Type> &rhs)
{
    unsigned lhsSize = lhs.getNumberOfColumns();
    unsigned rhsSize = rhs.getNumberOfColumns();
    LinAlg::Matrix<Type>ret(1,lhsSize+rhsSize+1);

    for(unsigned i = 0; i < lhsSize; ++i)
        for(unsigned j = 0; j < rhsSize; ++j)
        {
            ret(1,i+j+1) = ret(1,i+j+1) +  lhs(1,i+1)*rhs(1,j+1);
        }

    return ret;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:14,代码来源:polynom.hpp

示例11: Balance

void LinAlg::Balance (LinAlg::Matrix<Type> &matrix_to_balance)
{
    unsigned aux = 0;
    Type radix = FLT_RADIX, sqrdx = radix*radix, s, r, g, f, c;

    while(aux == 0)
    {
        aux = 1;
        for(unsigned i = 1; i <= matrix_to_balance.getNumberOfRows(); i++)
        {
            r = c = 0.0;
            for(unsigned j = 1; j <= matrix_to_balance.getNumberOfColumns(); j++)
                if( j != i)
                {
                    c += std::fabs(matrix_to_balance(j, i));
                    r += std::fabs(matrix_to_balance(i, j));
                }
            if(c && r)
            {
                g = r/radix;
                f = 1.0;
                s = c + r;
                while(c < g)
                {
                    f *= radix;
                    c *= sqrdx;
                }

                g = r*radix;
                while(c > g)
                {
                    f /= radix;
                    c /= sqrdx;
                }
                if((c + r)/f < 0.95*s)
                {
                    aux = 0;
                    g = 1.0/f;
                    for(unsigned j = 1; j <= matrix_to_balance.getNumberOfColumns(); j++)
                    {
                        matrix_to_balance(i, j) *= g;
                        matrix_to_balance(j, i) *= f;
                    }
                }
            }
        }
    }

}
开发者ID:Romulosanttos,项目名称:SistemasdeControle,代码行数:49,代码来源:linalg.hpp

示例12: Trace

Type LinAlg::Trace (const LinAlg::Matrix<Type>& mat)
{
    Type ret = 0;

    if(mat.getNumberOfRows() != mat.getNumberOfColumns())
        std::cout << "O traco so e calculado para matrizes quadradas.";
    else
    {
        for(unsigned i = 1; i <= mat.getNumberOfRows(); i++)
            for(unsigned j = 1; j <= mat.getNumberOfColumns(); j++)
                if(i == j)
                    ret += mat(i, j);
    }

    return ret;
}
开发者ID:Romulosanttos,项目名称:SistemasdeControle,代码行数:16,代码来源:linalg.hpp

示例13: LU_Factorization

void SistemasLineares::LU_Factorization(LinAlg::Matrix<float> Matriz, LinAlg::Matrix<float> &L, LinAlg::Matrix<float> &U)//Para Matriz Quadrada.
{
    L = LinAlg::Eye<float>(Matriz.getNumberOfRows());

    for(unsigned i = 1; i < Matriz.getNumberOfColumns(); ++i)
    {   //Laço para contagem das linhas de MatrizUni.
        for(unsigned j = i + 1; j <= Matriz.getNumberOfRows();  ++j)
        {
            L(j, i) = Matriz(j, i)/Matriz(i, i);
            //Laço para contagem das colunas da equação.
            for(unsigned z = i ; z <= Matriz.getNumberOfColumns(); ++z)
                Matriz(j, z) = Matriz(j, z) - L(j, i)*Matriz(i, z);
        }
    }
    U = Matriz;
}
开发者ID:domingosliraneto,项目名称:BibliotecaMatematica,代码行数:16,代码来源:sistemaslineares.cpp

示例14: EigenValues

LinAlg::Matrix<Type> LinAlg::CaracteristicPolynom (const LinAlg::Matrix<Type>& mat)
{
    unsigned n = mat.getNumberOfColumns();
    Matrix<Type> z = EigenValues(mat);
    Matrix<Type> zi = EigenValues(mat);
    Matrix<Type> ret(1,n+1);
    std::complex<Type> *tempPoly = new std::complex<Type> [2];
    tempPoly[0] = 1;
    tempPoly[1] = std::complex<Type>(-z(1,1),-z(1,2));
    std::complex<Type> * tempPolyEigenvalue = new std::complex<Type>[2];

    unsigned sizeTempPoly = 2;
    tempPolyEigenvalue[0] = 1;
    for(unsigned i = 2; i <= n ; ++i)
    {
        tempPolyEigenvalue[1] = std::complex<Type>(-z(i,1),-z(i,2));//apos o templade entre (real,imaginario) atribuição
        tempPoly = LinAlg::MultPoly(tempPoly,tempPolyEigenvalue,sizeTempPoly,2);
        sizeTempPoly++;

    }
    for(unsigned i = 0; i < sizeTempPoly ; ++i)
    {
        ret(1,i+1) = tempPoly[i].real();
    }
    return ret;

}
开发者ID:Romulosanttos,项目名称:SistemasdeControle,代码行数:27,代码来源:linalg.hpp

示例15:

void PlotHandler::plot<Type>::realTimeDataUpdate(LinAlg::Matrix<Type> X, LinAlg::Matrix<Type> Y)
{
    for(unsigned i = 1; i <= X.getNumberOfColumns(); i++)
    {
        this->realTimeDataUpdate(X(1,i),Y(1,i));
    }
}
开发者ID:LoopSoft,项目名称:TE-Matrix,代码行数:7,代码来源:plot.hpp


注:本文中的linalg::Matrix::getNumberOfColumns方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。