Changeset b0c244f in mmcs for genericFunctions.cpp


Ignore:
Timestamp:
Sep 28, 2016, 3:44:48 PM (8 years ago)
Author:
rudmanmrrod <rudman22@…>
Branches:
master
Children:
f2dac89
Parents:
b23848e
Message:

Agregado el modulo de descomposicion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • genericFunctions.cpp

    rdfabbb4 rb0c244f  
    77*/
    88#include <genericFunctions.h>
     9
     10using namespace Eigen;
    911
    1012
     
    7981        {
    8082            int contar = CuentaFila.count(accName);
    81             tw->setSpan(i,0,contar,1);
     83            qDebug()<<contar;
     84            if(contar>1)
     85            {
     86                tw->setSpan(i,0,contar,1);
     87            }
    8288            CuentaFila.removeAll(accName);
    8389        }
     
    94100        {
    95101            int contar = CuentaColumna.count(accName);
    96             tw->setSpan(0,j,1,contar);
     102            qDebug()<<contar;
     103            if(contar>1)
     104            {
     105                tw->setSpan(0,j,1,contar);
     106            }
    97107            CuentaColumna.removeAll(accName);
    98108        }
     
    400410
    401411/**
    402    @brief Funcion que permite
     412   @brief Funcion que permite colocar filas/columnas como no editables
    403413   @date 08/09/2016
    404414   @author Rodrigo Boet
     
    429439}
    430440
     441/**
     442   @brief Funcion que extraer una submatriz de una tabla
     443   @date 27/09/2016
     444   @author Rodrigo Boet
     445   @param <tw> Recibe el widget de la tabla
     446   @param <nombre_fila> Recibe el nombre de la cuenta en fila
     447   @param <nombre_columna> Recibe el nombre de la cuenta en columna
     448   @param <matriz> Recibe la sub-matriz de donde se sacarán los valores
     449   @return <result> Retorna la sub-matriz
     450*/
     451Eigen::MatrixXd extractSubMatriz(QTableWidget *tw, QString nombre_fila, QString nombre_columna, Eigen::MatrixXd Matrix)
     452{
     453    int rows = tw->rowCount();
     454    Eigen::MatrixXd result;
     455    int pos = 0;
     456    for(int i = 2; i < rows ;i++)
     457    {
     458        bool entro = false;
     459        int cant = 0;
     460        QVector <double> values;
     461        for(int j = 2; j < rows;j++)
     462        {
     463            if(tw->item(0,i)->text()==nombre_fila and tw->item(j,0)->text()==nombre_columna)
     464            {
     465                entro = true;
     466                double value = Matrix(i-2,j-2);
     467                values.append(value);
     468                cant++;
     469            }
     470        }
     471        if(entro)
     472        {
     473            result.resize(cant,cant);
     474            for(int k=0;k<values.count();k++)
     475            {
     476                result(pos,k) = values.at(k);
     477            }
     478            pos++;
     479        }
     480    }
     481    return result;
     482}
     483
     484/**
     485   @brief Funcion que extraer la diagonal principal de una matriz de Eigen
     486   @date 28/09/2016
     487   @author Rodrigo Boet
     488   @param <matriz> Recibe la sub-matriz de donde se sacarán los valores
     489   @return <resul> Retorna la suma de la diagonal
     490*/
     491QVector<double> extractDiagonal(Eigen::MatrixXd Matrix)
     492{
     493    QVector<double> result;
     494    for(int i=0;i<Matrix.rows();i++)
     495    {
     496        for(int j=0;j<Matrix.rows();j++)
     497        {
     498            if(i==j)
     499            {
     500                result.append(Matrix(i,j));
     501            }
     502        }
     503    }
     504    return result;
     505}
     506
     507/**
     508   @brief Funcion que valida que la diagonal sea distinta de cero
     509   @date 28/09/2016
     510   @author Rodrigo Boet
     511   @param <diagonal> Recibe el vector con la diagonal
     512   @return <valida> Retorna verdadero si la diagonal es distinta de cero, falso en caso contrario
     513*/
     514bool validarDiagonal(QVector<double> diagonal)
     515{
     516    int count = diagonal.count();
     517    bool valida = true;
     518    for(int i=0;i<count;i++)
     519    {
     520        if(qAbs(diagonal.at(i))<0.00001)
     521        {
     522            valida = false;
     523        }
     524    }
     525    return valida;
     526}
     527
     528/**
     529   @brief Funcion para llenar un vector con otro
     530   @date 28/09/2016
     531   @author Rodrigo Boet
     532   @param <elements> Recibe el vector con los elementos
     533   @param <vector> Recibe el vector que se llenara
     534*/
     535void appendElements(QVector<double> elements, QVector<double> &vector)
     536{
     537    foreach (double value, elements) {
     538        vector.append(value);
     539    }
     540}
     541
Note: See TracChangeset for help on using the changeset viewer.