MatterElementAnalysis.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // Created by Austin on 2023/10/11.
  3. //
  4. #ifndef ALGORITHM__MATTERELEMENTANALYSIS_H_
  5. #define ALGORITHM__MATTERELEMENTANALYSIS_H_
  6. #include <QVector>
  7. struct MEARange
  8. {
  9. int index; // 指标号
  10. double min_value;
  11. double max_value;
  12. };
  13. typedef QVector<QVector<double>> MEAMat;
  14. typedef QVector<QVector<MEARange>> MEARangeMat;
  15. /**
  16. * @brief 物元法
  17. */
  18. class MatterElementAnalysis
  19. {
  20. public:
  21. /**
  22. *
  23. * @param mat : 输入矩阵,一行代表一个样本, 每列对应一个指标
  24. * @param ranges : 各项指标的评价等级
  25. */
  26. MatterElementAnalysis(const MEAMat &mat, const MEARangeMat &ranges);
  27. void evaluate();
  28. const MEAMat &getRangeWeights() const;
  29. QVector<int> getBestIndex() const;
  30. int sample_num_; // 样本数
  31. int index_num_; // 指标数
  32. private:
  33. void associatedValue(int sam, int index, double value);
  34. void evaluationlevel(const QVector<double> &weights);
  35. MEAMat mat_;
  36. MEARangeMat ranges_;
  37. QVector<MEAMat> range_cvt_;
  38. MEAMat range_weights_;
  39. };
  40. #endif // ALGORITHM__MATTERELEMENTANALYSIS_H_