FLImaging 6.5.8.1
Matrix.h
1#pragma once
2
10#include "DefinitionsMathematics.h"
11#include "FLPointArray.h"
12
14namespace FLImaging
15{
17 namespace Foundation
18 {
28 {
34
40 };
41
51 {
67 };
68
69 template <typename Ty>
70 class FL_EXPORT CMatrixFor3D;
71
77 template <typename Ty>
78 class FL_EXPORT CMatrix : public Base::CFLBase
79 {
80 public:
86
91 virtual ~CMatrix();
92
100 CMatrix(const CMatrix<Ty>& matrix);
101
109 CMatrix(const CMatrix<Ty>* pMatrix);
110
120 CMatrix(int64_t i64Row, int64_t i64Column);
121
133 CMatrix(int64_t i64Row, int64_t i64Column, Ty tFillValue);
134
145
155 virtual const CMatrix<Ty>& operator+=(const int32_t& i32Param);
156
166 virtual const CMatrix<Ty>& operator+=(const int64_t& i64Param);
167
177 virtual const CMatrix<Ty>& operator+=(const float& f32Param);
178
188 virtual const CMatrix<Ty>& operator+=(const double& f64Param);
189
199 virtual const CMatrix<Ty>& operator+=(const CMatrix<Ty>& cMat);
200
210 virtual const CMatrix<Ty>& operator-=(const int32_t& i32Param);
211
221 virtual const CMatrix<Ty>& operator-=(const int64_t& i64Param);
222
232 virtual const CMatrix<Ty>& operator-=(const float& f32Param);
233
243 virtual const CMatrix<Ty>& operator-=(const double& f64Param);
244
254 virtual const CMatrix<Ty>& operator-=(const CMatrix<Ty>& cMat);
255
265 virtual const CMatrix<Ty>& operator*=(const int32_t& i32Param);
266
276 virtual const CMatrix<Ty>& operator*=(const int64_t& i64Param);
277
287 virtual const CMatrix<Ty>& operator*=(const float& f32Param);
288
298 virtual const CMatrix<Ty>& operator*=(const double& f64Param);
299
309 virtual const CMatrix<Ty>& operator*=(const CMatrix<Ty>& cMat);
310
320 virtual const CMatrix<Ty>& operator/=(const int32_t& i32Param);
321
331 virtual const CMatrix<Ty>& operator/=(const int64_t& i64Param);
332
342 virtual const CMatrix<Ty>& operator/=(const float& f32Param);
343
353 virtual const CMatrix<Ty>& operator/=(const double& f64Param);
354
364 virtual const CMatrix<Ty>& operator/=(const CMatrix<Ty>& cMat);
365
375 CMatrix<Ty> operator+(const int32_t& i32Param) const;
376
386 CMatrix<Ty> operator+(const int64_t& i64Param) const;
387
397 CMatrix<Ty> operator+(const float& f32Param) const;
398
408 CMatrix<Ty> operator+(const double& f64Param) const;
409
420
430 CMatrix<Ty> operator-(const int32_t& i32Param) const;
431
441 CMatrix<Ty> operator-(const int64_t& i64Param) const;
442
452 CMatrix<Ty> operator-(const float& f32Param) const;
453
463 CMatrix<Ty> operator-(const double& f64Param) const;
464
475
485 CMatrix<Ty> operator*(const int32_t& i32Param) const;
486
496 CMatrix<Ty> operator*(const int64_t& i64Param) const;
497
507 CMatrix<Ty> operator*(const float& f32Param) const;
508
518 CMatrix<Ty> operator*(const double& f64Param) const;
519
530
540 CMatrix<Ty> operator/(const int32_t& i32Param) const;
541
551 CMatrix<Ty> operator/(const int64_t& i64Param) const;
552
562 CMatrix<Ty> operator/(const float& f32Param) const;
563
573 CMatrix<Ty> operator/(const double& f64Param) const;
574
585
595 virtual const CMatrix<Ty>& operator=(const CMatrix<double>& matrix);
596
606 virtual const CMatrix<Ty>& operator=(const CMatrix<float>& matrix);
607
617 virtual const CMatrix<Ty>& operator=(const CMatrix<double>* pMatrix);
618
628 virtual const CMatrix<Ty>& operator=(const CMatrix<float>* pMatrix);
629
641 virtual const CMatrix<Ty>& operator=(const Base::CFLArray<Base::CFLArray<Ty>>& fla2Matrix);
642
652 virtual bool operator==(const CMatrix<Ty>& cMat) const;
653
663 virtual bool operator!=(const CMatrix<Ty>& cMat) const;
664
674 CMatrix<Ty> operator==(const double& f64Param) const;
675
685 CMatrix<Ty> operator!=(const double& f64Param) const;
686
696 CMatrix<Ty> operator<(const double& f64Param) const;
697
707 CMatrix<Ty> operator>(const double& f64Param) const;
708
718 CMatrix<Ty> operator<(const CMatrix<Ty>& matOperand) const;
719
729 CMatrix<Ty> operator>(const CMatrix<Ty>& matOperand) const;
730
740 CMatrix<Ty> operator%(const double& f64Param) const;
741
751 CMatrix<Ty> operator%(const CMatrix<Ty>& matOperand) const;
752
762 CMatrix<Ty> operator&&(const CMatrix<Ty>& matOperand) const;
763
773 virtual const CMatrix<Ty>& operator%=(const double& f64Param);
774
775 friend CMatrix<Ty> operator+(const double& value, const CMatrix<Ty>& mat)
776 {
777 CMatrix<Ty> matReturn(mat);
778 matReturn += value;
779 return matReturn;
780 }
781
782 friend CMatrix<Ty> operator+(const float& value, const CMatrix<Ty>& mat)
783 {
784 CMatrix<Ty> matReturn(mat);
785 matReturn += value;
786 return matReturn;
787 }
788
789 friend CMatrix<Ty> operator+(const int64_t& value, const CMatrix<Ty>& mat)
790 {
791 CMatrix<Ty> matReturn(mat);
792 matReturn += value;
793 return matReturn;
794 }
795
796 friend CMatrix<Ty> operator+(const int32_t& value, const CMatrix<Ty>& mat)
797 {
798 CMatrix<Ty> matReturn(mat);
799 matReturn += value;
800 return matReturn;
801 }
802
803 friend CMatrix<Ty> operator-(const double& value, const CMatrix<Ty>& mat)
804 {
805 CMatrix<Ty> matReturn(mat);
806 matReturn -= value;
807 return matReturn;
808 }
809
810 friend CMatrix<Ty> operator-(const float& value, const CMatrix<Ty>& mat)
811 {
812 CMatrix<Ty> matReturn(mat);
813 matReturn -= value;
814 return matReturn;
815 }
816
817 friend CMatrix<Ty> operator-(const int64_t& value, const CMatrix<Ty>& mat)
818 {
819 CMatrix<Ty> matReturn(mat);
820 matReturn -= value;
821 return matReturn;
822 }
823
824 friend CMatrix<Ty> operator-(const int32_t& value, const CMatrix<Ty>& mat)
825 {
826 CMatrix<Ty> matReturn(mat);
827 matReturn -= value;
828 return matReturn;
829 }
830
831 friend CMatrix<Ty> operator*(const double& value, const CMatrix<Ty>& mat)
832 {
833 CMatrix<Ty> matReturn(mat);
834 matReturn *= value;
835 return matReturn;
836 }
837
838 friend CMatrix<Ty> operator*(const float& value, const CMatrix<Ty>& mat)
839 {
840 CMatrix<Ty> matReturn(mat);
841 matReturn *= value;
842 return matReturn;
843 }
844
845 friend CMatrix<Ty> operator*(const int64_t& value, const CMatrix<Ty>& mat)
846 {
847 CMatrix<Ty> matReturn(mat);
848 matReturn *= value;
849 return matReturn;
850 }
851
852 friend CMatrix<Ty> operator*(const int32_t& value, const CMatrix<Ty>& mat)
853 {
854 CMatrix<Ty> matReturn(mat);
855 matReturn *= value;
856 return matReturn;
857 }
858
859 friend CMatrix<Ty> operator<(const double& value, const CMatrix<Ty>& mat)
860 {
861 CMatrix<Ty> matReturn(mat > value);
862 return matReturn;
863 }
864
865 friend CMatrix<Ty> operator>(const double& value, const CMatrix<Ty>& mat)
866 {
867 CMatrix<Ty> matReturn(mat < value);
868 return matReturn;
869 }
870
878 virtual operator Ty* ();
879
891 virtual Ty* operator() (const int32_t i32Row, const int32_t i32Column) const;
892
902 virtual Ty* operator[](int32_t i32Index);
903
913 virtual Ty* operator[](int64_t i64Index);
914
924 virtual const Ty* operator[](int32_t i32Index) const;
925
935 virtual const Ty* operator[](int64_t i64Index) const;
936
947
963 virtual const CResult Create(int64_t i64Row, int64_t i64Column, bool bFillZero = true);
964
978 virtual const CResult Create(const CMatrix<float>& matShape, Ty tFillValue = 0);
979
993 virtual const CResult Create(const CMatrix<double>& matShape, Ty tFillValue = 0);
994
1008 virtual const CResult Create(const CMatrix<float>* pMatShape, Ty tFillValue = 0);
1009
1023 virtual const CResult Create(const CMatrix<double>* pMatShape, Ty tFillValue = 0);
1024
1038 virtual const CResult Ones(int64_t i64Row, int64_t i64Column);
1039
1053 virtual const CResult Zeros(int64_t i64Row, int64_t i64Column);
1054
1070 virtual const CResult Full(int64_t i64Row, int64_t i64Column, Ty tFillValue);
1071
1083 virtual const CResult OnesLike(const CMatrix<float>& matShape);
1084
1096 virtual const CResult OnesLike(const CMatrix<double>& matShape);
1097
1109 virtual const CResult OnesLike(const CMatrix<float>* pMatShape);
1110
1122 virtual const CResult OnesLike(const CMatrix<double>* pMatShape);
1123
1135 virtual const CResult ZerosLike(const CMatrix<float>& matShape);
1136
1148 virtual const CResult ZerosLike(const CMatrix<double>& matShape);
1149
1161 virtual const CResult ZerosLike(const CMatrix<float>* pMatShape);
1162
1174 virtual const CResult ZerosLike(const CMatrix<double>* pMatShape);
1175
1189 virtual const CResult FullLike(const CMatrix<float>& matShape, Ty tFillValue);
1190
1204 virtual const CResult FullLike(const CMatrix<double>& matShape, Ty tFillValue);
1205
1219 virtual const CResult FullLike(const CMatrix<float>* pMatShape, Ty tFillValue);
1220
1234 virtual const CResult FullLike(const CMatrix<double>* pMatShape, Ty tFillValue);
1235
1243 virtual bool IsValid() const override;
1244
1256 virtual const CResult Assign(const CMatrix<double>& matrix);
1257
1269 virtual const CResult Assign(const CMatrix<float>& matrix);
1270
1282 virtual const CResult Assign(const CMatrix<double>* pMatrix);
1283
1295 virtual const CResult Assign(const CMatrix<float>* pMatrix);
1296
1312 virtual const CResult Assign(Ty* pArr2Mat, int64_t i64Row, int64_t i64Column);
1313
1327 virtual const CResult Assign(const Base::CFLArray<Base::CFLArray<Ty>>& fla2Matrix);
1328
1342 virtual const CResult Assign(const Base::CFLArray<Base::CFLArray<Ty>>* pFla2Matrix);
1343
1359 virtual const CResult Set(Ty* pArr2Mat, int64_t i64Row, int64_t i64Column);
1360
1365 virtual void Clear();
1366
1374 virtual int64_t GetColumn() const;
1375
1383 virtual int64_t GetRow() const;
1384
1392 virtual int64_t GetElementCount() const;
1393
1401 virtual int64_t GetTotalSizeByte() const;
1402
1410 virtual int64_t GetColumnSizeByte() const;
1411
1419 virtual int64_t GetRowSizeByte() const;
1420
1428 virtual Ty* GetBuffer() const;
1429
1437 virtual Ty** GetYCache() const;
1438
1450 virtual Ty* GetValue(int64_t i64Row, int64_t i64Column) const;
1451
1471 virtual const CResult GetRange(CMatrix<Ty>* pMatResult, int64_t i64StartRow = -1, int64_t i64StartColumn = -1, int64_t i64EndRow = -1, int64_t i64EndColumn = -1) const;
1472
1494 virtual const CResult GetRange(Base::CFLArray<Ty>* pMatResult, int64_t i64StartRow = -1, int64_t i64StartColumn = -1, int64_t i64EndRow = -1, int64_t i64EndColumn = -1) const;
1495
1517 virtual const CResult GetRange(Base::CFLArray<Base::CFLArray<Ty>>* pMatResult, int64_t i64StartRow = -1, int64_t i64StartColumn = -1, int64_t i64EndRow = -1, int64_t i64EndColumn = -1) const;
1518
1538 virtual const CResult GetRangeRef(CMatrix<Ty>* pMatResult, int64_t i64StartRow = -1, int64_t i64StartColumn = -1, int64_t i64EndRow = -1, int64_t i64EndColumn = -1) const;
1539
1551 virtual const CResult Fill(Ty value);
1552
1562 virtual const CResult FillZero();
1563
1577 virtual const CResult FillRandom(Ty tRangeMin, Ty tRangeMax);
1578
1592 virtual const CResult FillLinear(Ty tRangeStart, Ty tRangeEnd);
1593
1607 virtual const CResult LinSpace(Ty tRangeStart, Ty tRangeEnd);
1608
1624 virtual const CResult SetValue(int64_t i64Row, int64_t i64Column, Ty value);
1625
1637 virtual const CResult Add(const CMatrix<Ty>& matrix);
1638
1650 virtual const CResult Add(const CMatrix<Ty>* pMatrix);
1651
1665 virtual const CResult Add(const CMatrix<Ty>& matrix, CMatrix<Ty>* pTargetMatrix) const;
1666
1680 virtual const CResult Add(const CMatrix<Ty>* pMatrix, CMatrix<Ty>* pTargetMatrix) const;
1681
1693 virtual const CResult Subtract(const CMatrix<Ty>& matrix);
1694
1706 virtual const CResult Subtract(const CMatrix<Ty>* pMatrix);
1707
1721 virtual const CResult Subtract(const CMatrix<Ty>& matrix, CMatrix<Ty>* pTargetMatrix) const;
1722
1736 virtual const CResult Subtract(const CMatrix<Ty>* pMatrix, CMatrix<Ty>* pTargetMatrix) const;
1737
1747 virtual const CResult Multiply(const int32_t& i32Scalar);
1748
1758 virtual const CResult Multiply(const int64_t& i64Scalar);
1759
1769 virtual const CResult Multiply(const float& f32Scalar);
1770
1780 virtual const CResult Multiply(const double& f64Scalar);
1781
1793 virtual const CResult Multiply(const CMatrix<Ty>& matrix);
1794
1806 virtual const CResult Multiply(const CMatrix<Ty>* pMatrix);
1807
1821 virtual const CResult Multiply(const CMatrix<Ty>& matrix, CMatrix<Ty>* pTargetMatrix) const;
1822
1836 virtual const CResult Multiply(const CMatrix<Ty>* pMatrix, CMatrix<Ty>* pTargetMatrix) const;
1837
1849 virtual const CResult MultiplyElementwise(const CMatrix<Ty>& matrix);
1850
1862 virtual const CResult MultiplyElementwise(const CMatrix<Ty>* pMatrix);
1863
1877 virtual const CResult MultiplyElementwise(const CMatrix<Ty>& matrix, CMatrix<Ty>* pTargetMatrix) const;
1878
1892 virtual const CResult MultiplyElementwise(const CMatrix<Ty>* pMatrix, CMatrix<Ty>* pTargetMatrix) const;
1893
1903 virtual const CResult Transpose();
1904
1916 virtual const CResult Transpose(CMatrix<Ty>* pTargetMatrix) const;
1917
1927 virtual const CResult Invert();
1928
1940 virtual const CResult Invert(CMatrix<Ty>* pTargetMatrix) const;
1941
1951 virtual const CResult Unit();
1952
1964 virtual const CResult Unit(CMatrix<Ty>* pTargetMatrix) const;
1965
1977 virtual const CResult SetDiagonal(Ty tVal);
1978
1992 virtual const CResult SetDiagonal(Ty tVal, CMatrix<Ty>* pTargetMatrix) const;
1993
2003 virtual const CResult PseudoInverse();
2004
2016 virtual const CResult PseudoInverse(CMatrix<Ty>* pTargetMatrix) const;
2017
2029 virtual Ty GetNorm(const Ty tP = 2) const;
2030
2048 virtual const CResult ReduceSum(const EMatrixReduceType eReduceType, CMatrix<Ty>* pMatResult) const;
2049
2067 virtual const CResult ReduceMean(const EMatrixReduceType eReduceType, CMatrix<Ty>* pMatResult) const;
2068
2086 virtual const CResult ReduceMax(const EMatrixReduceType eReduceType, CMatrix<Ty>* pMatResult) const;
2087
2105 virtual const CResult ReduceMin(const EMatrixReduceType eReduceType, CMatrix<Ty>* pMatResult) const;
2106
2114 virtual CMatrix<Ty> T() const;
2115
2123 virtual CMatrix<Ty> I() const;
2124
2132 virtual CMatrix<Ty> P() const;
2133
2141 virtual CMatrix<Ty> U() const;
2142
2150 virtual double Determinant() const;
2151
2167 virtual const CResult Hessenberg(CMatrix<Ty>* pMatrixH, CMatrix<Ty>* pMatrixP = nullptr) const;
2168
2186 virtual const CResult SVD(CMatrix<Ty>* pMatrixU, CMatrix<Ty>* pMatrixSig, CMatrix<Ty>* pMatrixVT) const;
2187
2203 virtual const CResult QR(CMatrix<Ty>* pMatrixQ, CMatrix<Ty>* pMatrixR) const;
2204
2220 virtual const CResult LU(CMatrix<Ty>* pMatrixL, CMatrix<Ty>* pMatrixU) const;
2221
2239 virtual const CResult LUP(CMatrix<Ty>* pMatrixP, CMatrix<Ty>* pMatrixL, CMatrix<Ty>* pMatrixU) const;
2240
2252 virtual bool CheckRange(Ty tMin, Ty tMax) const;
2253
2273 virtual const CResult MulTransposed(const CMatrix<Ty>* pMatrixSource, CMatrix<Ty>* pMatrixDestination, int32_t i32Order, CMatrix<Ty>* pMatDelta = nullptr, double f64Scale = 1.) const;
2274
2288 virtual const CResult CrossProduct(const CMatrix<Ty>& matrixSource2, CMatrix<Ty>* pMatrixDestination) const;
2289
2303 virtual const CResult CrossProduct(const CMatrix<Ty>* pMatrixSource2, CMatrix<Ty>* pMatrixDestination) const;
2304
2318 virtual const CResult Reshape(int64_t i64Row, int64_t i64Column = -1);
2319
2329 virtual const CResult Abs();
2330
2340 virtual const CResult Sqrt();
2341
2351 virtual const CResult Ceil();
2352
2362 virtual const CResult Floor();
2363
2373 virtual const CResult Round();
2374
2384 virtual const CResult Sin();
2385
2395 virtual const CResult Cos();
2396
2406 virtual const CResult Tan();
2407
2417 virtual const CResult Arcsin();
2418
2428 virtual const CResult Arccos();
2429
2441 virtual const CResult Arctan2(const CMatrix<Ty>& matrixX);
2442
2454 virtual const CResult Arctan2(const CMatrix<Ty>* pMatrixX);
2455
2465 virtual const CResult Degrees();
2466
2476 virtual const CResult Radians();
2477
2487 virtual const CResult Log();
2488
2498 virtual const CResult Log2();
2499
2509 virtual const CResult Log10();
2510
2520 virtual const CResult Log1p();
2521
2535 virtual const CResult Clip(Ty tMin, Ty tMax);
2536
2550 virtual const CResult ArgMin(int64_t& i64ResultRow, int64_t& i64ResultColumn) const;
2551
2569 virtual const CResult ArgMin(Base::CFLArray<int64_t>& flaResultIndex, EMatrixAxis eAxis) const;
2570
2588 virtual const CResult ArgMin(Base::CFLArray<int64_t>* pFlaResultIndex, EMatrixAxis eAxis) const;
2589
2603 virtual const CResult ArgMax(int64_t& i64ResultRow, int64_t& i64ResultColumn) const;
2604
2622 virtual const CResult ArgMax(Base::CFLArray<int64_t>& flaResultIndex, EMatrixAxis eAxis) const;
2623
2641 virtual const CResult ArgMax(Base::CFLArray<int64_t>* pFlaResultIndex, EMatrixAxis eAxis) const;
2642
2662 virtual const CResult ArgSort(CMatrix<Ty>* pMatResultIndex = nullptr, EMatrixSortOrder eOrder = EMatrixSortOrder_Ascending, EMatrixAxis eAxis = EMatrixAxis_Column);
2663
2671 virtual Ty Min() const;
2672
2688 virtual const CResult Min(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2689
2705 virtual const CResult Min(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2706
2714 virtual Ty Max() const;
2715
2731 virtual const CResult Max(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2732
2748 virtual const CResult Max(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2749
2757 virtual Ty Sum() const;
2758
2774 virtual const CResult Sum(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2775
2791 virtual const CResult Sum(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2792
2800 virtual Ty Mean() const;
2801
2817 virtual const CResult Mean(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2818
2834 virtual const CResult Mean(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2835
2843 virtual Ty Std() const;
2844
2860 virtual const CResult Std(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2861
2877 virtual const CResult Std(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2878
2892 virtual const CResult HStack(const CMatrix<Ty>& matInput, CMatrix<Ty>* pMatResult = nullptr);
2893
2907 virtual const CResult HStack(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult = nullptr);
2908
2922 virtual const CResult VStack(const CMatrix<Ty>& matInput, CMatrix<Ty>* pMatResult = nullptr);
2923
2937 virtual const CResult VStack(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult = nullptr);
2938
2950 virtual const CResult Swap(CMatrix<Ty>& matRight);
2951
2963 virtual const CResult Swap(CMatrix<Ty>* pMatRight);
2964
2982 virtual const CResult Diff(CMatrix<Ty>& matResult, EMatrixAxis eAxis = EMatrixAxis_Column, int64_t i64Depth = 1) const;
2983
3001 virtual const CResult Diff(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis = EMatrixAxis_Column, int64_t i64Depth = 1) const;
3002
3014 virtual const CResult Dot(const CMatrix<Ty>* pMatInput);
3015
3029 virtual const CResult Dot(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult) const;
3030
3038 virtual double Prod() const;
3039
3057 virtual const CResult Prod(Base::CFLArray<double>& flaResult, EMatrixAxis eAxis) const;
3058
3076 virtual const CResult Prod(Base::CFLArray<double>* pFlaResult, EMatrixAxis eAxis) const;
3077
3089 virtual const CResult Unique(CMatrix<Ty>& matResult) const;
3090
3102 virtual const CResult Unique(CMatrix<Ty>* pMatResult) const;
3103
3119 virtual const CResult Unique(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
3120
3136 virtual const CResult Unique(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
3137
3145 virtual bool Any() const;
3146
3162 virtual const CResult Any(EMatrixAxis eAxis, CMatrix<Ty>& matResult) const;
3163
3179 virtual const CResult Any(EMatrixAxis eAxis, CMatrix<Ty>* pMatResult) const;
3180
3198 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>& matResult);
3199
3217 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>* pMatResult);
3218
3236 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>& matResult);
3237
3255 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>* pMatResult);
3256
3274 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, Ty tFalse, CMatrix<Ty>& matResult);
3275
3293 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3294
3312 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, Ty tFalse, CMatrix<Ty>& matResult);
3313
3331 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3332
3350 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>& matResult);
3351
3369 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>* pMatResult);
3370
3388 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>& matResult);
3389
3407 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>* pMatResult);
3408
3426 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>& matResult);
3427
3445 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3446
3464 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>& matResult);
3465
3483 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3484
3504 static const CResult SolveLU(CMatrix<Ty>* pMatL, CMatrix<Ty>* pMatU, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3505
3527 static const CResult SolveLUP(CMatrix<Ty>* pMatP, CMatrix<Ty>* pMatL, CMatrix<Ty>* pMatU, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3528
3546 static const CResult Solve(CMatrix<Ty>* pMatA, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3547
3583 static const CResult ConjugateGradient(const CMatrix<Ty>* pMatA, const CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes, bool bSparseMatrix = false, double f64Tolerance = 1e-5, int64_t i64MaxIteratorCount = 10000);
3584
3608 static const CResult GetSimilarity(const CFLPointArray& flpaSrcPoints, const CFLPointArray& flpaDstPoints, CMatrix<Ty>* pMatResult);
3609
3633 static const CResult GetSimilarity(const CFLPointArray* pFlpaSrcPoints, const CFLPointArray* pFlpaDstPoints, CMatrix<Ty>* pMatResult);
3634
3660 static const CResult GetSimilarity(const Base::CFLArray<Base::TPoint<Ty>>& flaSrcPoints, const Base::CFLArray<Base::TPoint<Ty>>& flaDstPoints, CMatrix<Ty>* pMatResult);
3661
3687 static const CResult GetSimilarity(const Base::CFLArray<Base::TPoint<Ty>>* pFlaSrcPoints, const Base::CFLArray<Base::TPoint<Ty>>* pFlaDstPoints, CMatrix<Ty>* pMatResult);
3688
3716 static const CResult GetSimilarity(const Base::CFLArray<Ty>& flaSrcX, const Base::CFLArray<Ty>& flaSrcY, const Base::CFLArray<Ty>& flaDstX, const Base::CFLArray<Ty>& flaDstY, CMatrix<Ty>* pMatResult);
3717
3745 static const CResult GetSimilarity(const Base::CFLArray<Ty>* pFlaSrcX, const Base::CFLArray<Ty>* pFlaSrcY, const Base::CFLArray<Ty>* pFlaDstX, const Base::CFLArray<Ty>* pFlaDstY, CMatrix<Ty>* pMatResult);
3746
3760 virtual const CResult Save(const Base::CFLString<wchar_t>& strFilePath) const;
3761
3775 virtual const CResult Save(const Base::CFLString<wchar_t>* pStrFilePath) const;
3776
3790 virtual const CResult Load(const Base::CFLString<wchar_t>& strFilePath);
3791
3805 virtual const CResult Load(const Base::CFLString<wchar_t>* pStrFilePath);
3806
3820 virtual const CResult SaveCSV(const Base::CFLString<wchar_t>& strFilePath) const;
3821
3835 virtual const CResult SaveCSV(const Base::CFLString<wchar_t>* pStrFilePath) const;
3836
3850 virtual const CResult LoadCSV(const Base::CFLString<wchar_t>& strFilePath);
3851
3865 virtual const CResult LoadCSV(const Base::CFLString<wchar_t>* pStrFilePath);
3866
3867
3878
3892 virtual const CResult SetOperationAccuracy(EAccuracy eOperationAccuracy);
3893
3901 virtual bool IsReferenceEnabled() const;
3902
3903
3904
3905 SupportToDuplicateObject(CMatrix, *this);
3906 DeclareGetClassType();
3907
3908 private:
3909 const CResult InternalGetProcessingMode(Base::CProcessingUnitCPU::EInstruction* pEMode, int32_t* pCoreCount = nullptr) const;
3910
3911 protected:
3912 Ty* m_pTVectors;
3913 Ty** m_pTVectorsYCache;
3914 int64_t m_i64Column;
3915 int64_t m_i64Row;
3916 int64_t m_i64ElementCount;
3917 int64_t m_i64TotalSizeByte;
3918 bool m_bBufferCreated;
3919 bool m_bReference;
3920 EAccuracy m_eOperationAccuracy;
3921
3922 template <typename Ty>
3923 friend class FL_EXPORT CMatrixFor3D;
3924 };
3925
3926 typedef CMatrix<float> CMatrixF;
3927 typedef CMatrix<double> CMatrixD;
3928 }
3929}
3930
3931
Template type 의 배열 클래스.
Definition RangeTree.h:19
FLImaging의 최상위 기저 클래스
Definition FLBase.h:36
Template type 의 문자열 클래스
Definition INIUtilities.h:20
EInstruction
명령어
Definition ProcessingUnitCPU.h:40
점을 표현하는 간략화된 클래스
Definition TPoint.h:37
FLImaging 모듈의 수행 결과 객체
Definition ResultsDef.h:1514
점 배열을 표현하는 클래스
Definition FLPointArray.h:26
3x3 행렬을 표현하는 클래스
Definition MatrixFor3D.h:28
행렬을 표현하는 클래스
Definition Matrix.h:79
virtual const CResult SaveCSV(const Base::CFLString< wchar_t > *pStrFilePath) const
CMatrix< Ty > operator*(const float &f32Param) const
virtual const CMatrix< Ty > & operator/=(const float &f32Param)
virtual const CResult Assign(const CMatrix< float > &matrix)
virtual const CResult Fill(Ty value)
CMatrix< Ty > operator+(const double &f64Param) const
virtual const CResult Sqrt()
virtual const CResult Set(Ty *pArr2Mat, int64_t i64Row, int64_t i64Column)
virtual const CResult Log10()
virtual const CResult OnesLike(const CMatrix< double > &matShape)
static const CResult Where(const CMatrix< Ty > &matCondition, const CMatrix< Ty > &matTrue, Ty tFalse, CMatrix< Ty > *pMatResult)
virtual const CResult Std(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
CMatrix< Ty > operator-(const CMatrix< Ty > &cMat) const
CMatrix(int64_t i64Row, int64_t i64Column, Ty tFillValue)
CMatrix(const CMatrix< Ty > &matrix)
CMatrix< Ty > operator>(const CMatrix< Ty > &matOperand) const
virtual const CResult Arcsin()
virtual const CResult Min(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
virtual const CResult Save(const Base::CFLString< wchar_t > &strFilePath) const
CMatrix< Ty > operator&&(const CMatrix< Ty > &matOperand) const
virtual CMatrix< Ty > I() const
virtual const CResult PseudoInverse()
virtual double Prod() const
virtual const CMatrix< Ty > & operator=(const CMatrix< double > *pMatrix)
virtual const CMatrix< Ty > & operator-=(const float &f32Param)
virtual const CResult Subtract(const CMatrix< Ty > &matrix)
virtual const CResult Abs()
virtual const CResult SetOperationAccuracy(EAccuracy eOperationAccuracy)
virtual const CMatrix< Ty > & operator+=(const int32_t &i32Param)
virtual const CResult GetRange(CMatrix< Ty > *pMatResult, int64_t i64StartRow=-1, int64_t i64StartColumn=-1, int64_t i64EndRow=-1, int64_t i64EndColumn=-1) const
virtual bool Any() const
virtual const CResult Assign(const Base::CFLArray< Base::CFLArray< Ty > > &fla2Matrix)
virtual const CResult CrossProduct(const CMatrix< Ty > *pMatrixSource2, CMatrix< Ty > *pMatrixDestination) const
virtual const CResult ArgMax(Base::CFLArray< int64_t > &flaResultIndex, EMatrixAxis eAxis) const
static const CResult Where(const CMatrix< Ty > &matCondition, const CMatrix< Ty > &matTrue, const CMatrix< Ty > &matFalse, CMatrix< Ty > &matResult)
virtual const CResult LU(CMatrix< Ty > *pMatrixL, CMatrix< Ty > *pMatrixU) const
virtual bool IsReferenceEnabled() const
virtual const CMatrix< Ty > & operator/=(const int64_t &i64Param)
virtual const CResult Prod(Base::CFLArray< double > *pFlaResult, EMatrixAxis eAxis) const
CMatrix< Ty > operator-(const double &f64Param) const
CMatrix< Ty > operator+(const float &f32Param) const
virtual const CResult GetRange(Base::CFLArray< Ty > *pMatResult, int64_t i64StartRow=-1, int64_t i64StartColumn=-1, int64_t i64EndRow=-1, int64_t i64EndColumn=-1) const
virtual const CResult Add(const CMatrix< Ty > &matrix)
virtual const CResult Log2()
virtual const CResult Min(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
virtual const CResult HStack(const CMatrix< Ty > &matInput, CMatrix< Ty > *pMatResult=nullptr)
virtual const CResult Multiply(const CMatrix< Ty > *pMatrix, CMatrix< Ty > *pTargetMatrix) const
virtual const CResult LinSpace(Ty tRangeStart, Ty tRangeEnd)
static const CResult Where(const CMatrix< Ty > &matCondition, Ty tTrue, const CMatrix< Ty > &matFalse, CMatrix< Ty > *pMatResult)
virtual const CResult Assign(const CMatrix< float > *pMatrix)
virtual const CResult ZerosLike(const CMatrix< float > &matShape)
CMatrix< Ty > operator!=(const double &f64Param) const
virtual const CResult MulTransposed(const CMatrix< Ty > *pMatrixSource, CMatrix< Ty > *pMatrixDestination, int32_t i32Order, CMatrix< Ty > *pMatDelta=nullptr, double f64Scale=1.) const
virtual const CResult Transpose(CMatrix< Ty > *pTargetMatrix) const
static const CResult Where(const CMatrix< Ty > *pMatCondition, const CMatrix< Ty > *pMatTrue, Ty tFalse, CMatrix< Ty > *pMatResult)
virtual const CResult Log1p()
CMatrix< Ty > operator-(const int64_t &i64Param) const
virtual const CResult SVD(CMatrix< Ty > *pMatrixU, CMatrix< Ty > *pMatrixSig, CMatrix< Ty > *pMatrixVT) const
virtual const CResult FullLike(const CMatrix< double > &matShape, Ty tFillValue)
virtual const CResult Assign(const Base::CFLArray< Base::CFLArray< Ty > > *pFla2Matrix)
static const CResult Where(const CMatrix< Ty > *pMatCondition, const CMatrix< Ty > *pMatTrue, Ty tFalse, CMatrix< Ty > &matResult)
virtual const CResult ZerosLike(const CMatrix< float > *pMatShape)
virtual const CResult Arccos()
virtual const CResult MultiplyElementwise(const CMatrix< Ty > *pMatrix, CMatrix< Ty > *pTargetMatrix) const
virtual const CResult Floor()
virtual const CResult Sin()
virtual const CResult Swap(CMatrix< Ty > *pMatRight)
virtual Ty * GetValue(int64_t i64Row, int64_t i64Column) const
virtual const CResult Multiply(const int64_t &i64Scalar)
virtual const CResult Round()
virtual int64_t GetRowSizeByte() const
virtual const CResult Assign(const CMatrix< double > *pMatrix)
virtual const CResult Arctan2(const CMatrix< Ty > &matrixX)
CMatrix< Ty > operator%(const CMatrix< Ty > &matOperand) const
virtual const Ty * operator[](int32_t i32Index) const
virtual Ty * operator[](int32_t i32Index)
virtual const CMatrix< Ty > & operator-=(const int32_t &i32Param)
CMatrix< Ty > operator*(const CMatrix< Ty > &cMat) const
virtual const CMatrix< Ty > & operator=(const CMatrix< float > *pMatrix)
virtual const CResult Dot(const CMatrix< Ty > *pMatInput, CMatrix< Ty > *pMatResult) const
virtual const CResult LoadCSV(const Base::CFLString< wchar_t > &strFilePath)
virtual CMatrix< Ty > U() const
virtual const CResult Ones(int64_t i64Row, int64_t i64Column)
virtual const CResult Reshape(int64_t i64Row, int64_t i64Column=-1)
static const CResult GetSimilarity(const Base::CFLArray< Ty > &flaSrcX, const Base::CFLArray< Ty > &flaSrcY, const Base::CFLArray< Ty > &flaDstX, const Base::CFLArray< Ty > &flaDstY, CMatrix< Ty > *pMatResult)
virtual const CResult ArgMax(Base::CFLArray< int64_t > *pFlaResultIndex, EMatrixAxis eAxis) const
virtual const CMatrix< Ty > & operator=(const CMatrix< float > &matrix)
virtual const CResult Create(const CMatrix< double > &matShape, Ty tFillValue=0)
static const CResult Where(const CMatrix< Ty > *pMatCondition, Ty tTrue, Ty tFalse, CMatrix< Ty > *pMatResult)
virtual const CResult Zeros(int64_t i64Row, int64_t i64Column)
static const CResult GetSimilarity(const CFLPointArray *pFlpaSrcPoints, const CFLPointArray *pFlpaDstPoints, CMatrix< Ty > *pMatResult)
virtual const CResult LUP(CMatrix< Ty > *pMatrixP, CMatrix< Ty > *pMatrixL, CMatrix< Ty > *pMatrixU) const
virtual const CMatrix< Ty > & operator/=(const CMatrix< Ty > &cMat)
virtual const Ty * operator[](int64_t i64Index) const
static const CResult GetSimilarity(const CFLPointArray &flpaSrcPoints, const CFLPointArray &flpaDstPoints, CMatrix< Ty > *pMatResult)
virtual const CResult SetDiagonal(Ty tVal)
virtual const CResult MultiplyElementwise(const CMatrix< Ty > &matrix)
virtual const CResult ReduceMin(const EMatrixReduceType eReduceType, CMatrix< Ty > *pMatResult) const
virtual const CResult FillZero()
virtual const CResult Degrees()
virtual const CResult ReduceMean(const EMatrixReduceType eReduceType, CMatrix< Ty > *pMatResult) const
static const CResult Where(const CMatrix< Ty > *pMatCondition, const CMatrix< Ty > *pMatTrue, const CMatrix< Ty > *pMatFalse, CMatrix< Ty > &matResult)
CMatrix< Ty > operator/(const double &f64Param) const
virtual const CResult Arctan2(const CMatrix< Ty > *pMatrixX)
CMatrix< Ty > operator%(const double &f64Param) const
virtual const CMatrix< Ty > & operator+=(const int64_t &i64Param)
virtual const CResult Multiply(const CMatrix< Ty > *pMatrix)
virtual const CResult Diff(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis=EMatrixAxis_Column, int64_t i64Depth=1) const
virtual const CResult MultiplyElementwise(const CMatrix< Ty > *pMatrix)
virtual const CResult Unique(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
virtual const CResult Multiply(const CMatrix< Ty > &matrix)
virtual const CResult ZerosLike(const CMatrix< double > &matShape)
virtual const CResult MultiplyElementwise(const CMatrix< Ty > &matrix, CMatrix< Ty > *pTargetMatrix) const
CMatrix< Ty > operator+(const int32_t &i32Param) const
static const CResult Where(const CMatrix< Ty > *pMatCondition, Ty tTrue, const CMatrix< Ty > *pMatFalse, CMatrix< Ty > *pMatResult)
CMatrix< Ty > operator/(const CMatrix< Ty > &cMat) const
virtual const CMatrix< Ty > & operator=(const CMatrix< double > &matrix)
CMatrix< Ty > operator+(const int64_t &i64Param) const
virtual const CResult Subtract(const CMatrix< Ty > *pMatrix, CMatrix< Ty > *pTargetMatrix) const
virtual int64_t GetElementCount() const
virtual const CMatrix< Ty > & operator%=(const double &f64Param)
virtual const CResult OnesLike(const CMatrix< float > *pMatShape)
virtual const CResult Load(const Base::CFLString< wchar_t > *pStrFilePath)
virtual const CResult FullLike(const CMatrix< float > &matShape, Ty tFillValue)
virtual const CResult SetDiagonal(Ty tVal, CMatrix< Ty > *pTargetMatrix) const
virtual const CResult PseudoInverse(CMatrix< Ty > *pTargetMatrix) const
virtual const CResult VStack(const CMatrix< Ty > &matInput, CMatrix< Ty > *pMatResult=nullptr)
virtual Ty ** GetYCache() const
static const CResult Where(const CMatrix< Ty > *pMatCondition, const CMatrix< Ty > *pMatTrue, const CMatrix< Ty > *pMatFalse, CMatrix< Ty > *pMatResult)
virtual const CMatrix< Ty > & operator-=(const CMatrix< Ty > &cMat)
virtual const CMatrix< Ty > & operator*=(const int64_t &i64Param)
static const CResult Where(const CMatrix< Ty > &matCondition, Ty tTrue, Ty tFalse, CMatrix< Ty > *pMatResult)
virtual const CResult ArgSort(CMatrix< Ty > *pMatResultIndex=nullptr, EMatrixSortOrder eOrder=EMatrixSortOrder_Ascending, EMatrixAxis eAxis=EMatrixAxis_Column)
virtual const CResult QR(CMatrix< Ty > *pMatrixQ, CMatrix< Ty > *pMatrixR) const
virtual const CResult Add(const CMatrix< Ty > *pMatrix)
virtual const CResult ArgMax(int64_t &i64ResultRow, int64_t &i64ResultColumn) const
CMatrix< Ty > operator/(const int64_t &i64Param) const
virtual const CResult Subtract(const CMatrix< Ty > *pMatrix)
virtual const CResult HStack(const CMatrix< Ty > *pMatInput, CMatrix< Ty > *pMatResult=nullptr)
CMatrix< Ty > operator-(const int32_t &i32Param) const
virtual const CResult Full(int64_t i64Row, int64_t i64Column, Ty tFillValue)
CMatrix(const CMatrix< Ty > *pMatrix)
virtual const CResult Create(const CMatrix< double > *pMatShape, Ty tFillValue=0)
virtual const CResult Transpose()
virtual const CResult Swap(CMatrix< Ty > &matRight)
static const CResult Where(const CMatrix< Ty > &matCondition, const CMatrix< Ty > &matTrue, const CMatrix< Ty > &matFalse, CMatrix< Ty > *pMatResult)
virtual Ty * GetBuffer() const
virtual const CResult Mean(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
static const CResult Solve(CMatrix< Ty > *pMatA, CMatrix< Ty > *pMatB, CMatrix< Ty > *pMatRes)
virtual const CMatrix< Ty > & operator*=(const CMatrix< Ty > &cMat)
virtual const CResult Std(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
virtual const CResult Multiply(const double &f64Scalar)
virtual const CMatrix< Ty > & operator*=(const double &f64Param)
virtual CMatrix< Ty > T() const
virtual const CResult FillRandom(Ty tRangeMin, Ty tRangeMax)
virtual const CMatrix< Ty > & operator+=(const CMatrix< Ty > &cMat)
static const CResult GetSimilarity(const Base::CFLArray< Ty > *pFlaSrcX, const Base::CFLArray< Ty > *pFlaSrcY, const Base::CFLArray< Ty > *pFlaDstX, const Base::CFLArray< Ty > *pFlaDstY, CMatrix< Ty > *pMatResult)
virtual const CResult Dot(const CMatrix< Ty > *pMatInput)
virtual const CResult ArgMin(Base::CFLArray< int64_t > &flaResultIndex, EMatrixAxis eAxis) const
virtual const CResult LoadCSV(const Base::CFLString< wchar_t > *pStrFilePath)
CMatrix< Ty > operator*(const double &f64Param) const
static const CResult Where(const CMatrix< Ty > &matCondition, Ty tTrue, Ty tFalse, CMatrix< Ty > &matResult)
virtual const CResult Any(EMatrixAxis eAxis, CMatrix< Ty > *pMatResult) const
virtual const CResult GetRange(Base::CFLArray< Base::CFLArray< Ty > > *pMatResult, int64_t i64StartRow=-1, int64_t i64StartColumn=-1, int64_t i64EndRow=-1, int64_t i64EndColumn=-1) const
virtual const CResult Create(const CMatrix< float > &matShape, Ty tFillValue=0)
virtual const CResult Sum(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
virtual const CResult Log()
virtual const CResult SetValue(int64_t i64Row, int64_t i64Column, Ty value)
virtual const CResult GetRangeRef(CMatrix< Ty > *pMatResult, int64_t i64StartRow=-1, int64_t i64StartColumn=-1, int64_t i64EndRow=-1, int64_t i64EndColumn=-1) const
virtual const CMatrix< Ty > & operator*=(const int32_t &i32Param)
virtual const CMatrix< Ty > & operator+=(const float &f32Param)
virtual const CResult Max(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
virtual const CResult OnesLike(const CMatrix< double > *pMatShape)
virtual const CResult Any(EMatrixAxis eAxis, CMatrix< Ty > &matResult) const
virtual int64_t GetColumn() const
virtual const CResult SaveCSV(const Base::CFLString< wchar_t > &strFilePath) const
virtual const CResult CrossProduct(const CMatrix< Ty > &matrixSource2, CMatrix< Ty > *pMatrixDestination) const
virtual const CResult Radians()
virtual const CResult FillLinear(Ty tRangeStart, Ty tRangeEnd)
virtual bool IsValid() const override
static const CResult SolveLU(CMatrix< Ty > *pMatL, CMatrix< Ty > *pMatU, CMatrix< Ty > *pMatB, CMatrix< Ty > *pMatRes)
virtual const CResult Unique(CMatrix< Ty > &matResult) const
virtual const CResult OnesLike(const CMatrix< float > &matShape)
virtual const CMatrix< Ty > & operator*=(const float &f32Param)
static const CResult GetSimilarity(const Base::CFLArray< Base::TPoint< Ty > > &flaSrcPoints, const Base::CFLArray< Base::TPoint< Ty > > &flaDstPoints, CMatrix< Ty > *pMatResult)
virtual const CResult Subtract(const CMatrix< Ty > &matrix, CMatrix< Ty > *pTargetMatrix) const
virtual const CResult Invert(CMatrix< Ty > *pTargetMatrix) const
virtual const CResult Clip(Ty tMin, Ty tMax)
static const CResult Where(const CMatrix< Ty > *pMatCondition, Ty tTrue, const CMatrix< Ty > *pMatFalse, CMatrix< Ty > &matResult)
static const CResult Where(const CMatrix< Ty > &matCondition, const CMatrix< Ty > &matTrue, Ty tFalse, CMatrix< Ty > &matResult)
virtual const CResult Assign(const CMatrix< double > &matrix)
virtual const CResult ArgMin(int64_t &i64ResultRow, int64_t &i64ResultColumn) const
virtual const CResult Multiply(const int32_t &i32Scalar)
virtual const CResult Cos()
virtual const CResult Create(int64_t i64Row, int64_t i64Column, bool bFillZero=true)
virtual const CResult Unit()
virtual double Determinant() const
static const CResult ConjugateGradient(const CMatrix< Ty > *pMatA, const CMatrix< Ty > *pMatB, CMatrix< Ty > *pMatRes, bool bSparseMatrix=false, double f64Tolerance=1e-5, int64_t i64MaxIteratorCount=10000)
CMatrix< Ty > operator/(const int32_t &i32Param) const
virtual const CResult Invert()
CMatrix< Ty > operator/(const float &f32Param) const
virtual const CResult Multiply(const CMatrix< Ty > &matrix, CMatrix< Ty > *pTargetMatrix) const
virtual EAccuracy GetOperationAccuracy()
virtual int64_t GetTotalSizeByte() const
virtual int64_t GetRow() const
virtual CMatrix< Ty > P() const
virtual const CResult ZerosLike(const CMatrix< double > *pMatShape)
virtual const CResult Sum(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
virtual const CResult Diff(CMatrix< Ty > &matResult, EMatrixAxis eAxis=EMatrixAxis_Column, int64_t i64Depth=1) const
virtual const CMatrix< Ty > & operator=(const Base::CFLArray< Base::CFLArray< Ty > > &fla2Matrix)
virtual const CResult Multiply(const float &f32Scalar)
static const CResult Where(const CMatrix< Ty > *pMatCondition, Ty tTrue, Ty tFalse, CMatrix< Ty > &matResult)
virtual const CMatrix< Ty > & operator-=(const int64_t &i64Param)
virtual const CResult Save(const Base::CFLString< wchar_t > *pStrFilePath) const
virtual const CResult Tan()
virtual bool operator!=(const CMatrix< Ty > &cMat) const
virtual EMatrixTemplateType GetTemplateType() const
virtual const CMatrix< Ty > & operator+=(const double &f64Param)
CMatrix< Ty > operator==(const double &f64Param) const
virtual const CResult Add(const CMatrix< Ty > &matrix, CMatrix< Ty > *pTargetMatrix) const
CMatrix< Ty > operator*(const int64_t &i64Param) const
virtual const CResult ReduceMax(const EMatrixReduceType eReduceType, CMatrix< Ty > *pMatResult) const
static const CResult GetSimilarity(const Base::CFLArray< Base::TPoint< Ty > > *pFlaSrcPoints, const Base::CFLArray< Base::TPoint< Ty > > *pFlaDstPoints, CMatrix< Ty > *pMatResult)
virtual const CResult Ceil()
virtual bool operator==(const CMatrix< Ty > &cMat) const
virtual const CResult Unique(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
static const CResult Where(const CMatrix< Ty > &matCondition, Ty tTrue, const CMatrix< Ty > &matFalse, CMatrix< Ty > &matResult)
virtual bool CheckRange(Ty tMin, Ty tMax) const
CMatrix(int64_t i64Row, int64_t i64Column)
virtual const CResult ArgMin(Base::CFLArray< int64_t > *pFlaResultIndex, EMatrixAxis eAxis) const
virtual const CResult VStack(const CMatrix< Ty > *pMatInput, CMatrix< Ty > *pMatResult=nullptr)
virtual const CResult Unit(CMatrix< Ty > *pTargetMatrix) const
virtual const CResult Prod(Base::CFLArray< double > &flaResult, EMatrixAxis eAxis) const
virtual int64_t GetColumnSizeByte() const
virtual const CResult Add(const CMatrix< Ty > *pMatrix, CMatrix< Ty > *pTargetMatrix) const
virtual const CResult FullLike(const CMatrix< double > *pMatShape, Ty tFillValue)
CMatrix< Ty > operator-(const float &f32Param) const
CMatrix< Ty > operator+(const CMatrix< Ty > &cMat) const
virtual const CResult Unique(CMatrix< Ty > *pMatResult) const
virtual const CResult Create(const CMatrix< float > *pMatShape, Ty tFillValue=0)
virtual const CMatrix< Ty > & operator/=(const double &f64Param)
virtual const CMatrix< Ty > & operator-=(const double &f64Param)
virtual const CMatrix< Ty > & operator/=(const int32_t &i32Param)
virtual const CResult Mean(CMatrix< Ty > &matResult, EMatrixAxis eAxis) const
virtual const CResult Max(CMatrix< Ty > *pMatResult, EMatrixAxis eAxis) const
virtual Ty * operator[](int64_t i64Index)
virtual const CResult ReduceSum(const EMatrixReduceType eReduceType, CMatrix< Ty > *pMatResult) const
virtual Ty GetNorm(const Ty tP=2) const
virtual const CResult Load(const Base::CFLString< wchar_t > &strFilePath)
virtual const CResult FullLike(const CMatrix< float > *pMatShape, Ty tFillValue)
static const CResult SolveLUP(CMatrix< Ty > *pMatP, CMatrix< Ty > *pMatL, CMatrix< Ty > *pMatU, CMatrix< Ty > *pMatB, CMatrix< Ty > *pMatRes)
CMatrix< Ty > operator*(const int32_t &i32Param) const
virtual const CResult Hessenberg(CMatrix< Ty > *pMatrixH, CMatrix< Ty > *pMatrixP=nullptr) const
virtual const CResult Assign(Ty *pArr2Mat, int64_t i64Row, int64_t i64Column)
EMatrixTemplateType
행렬 데이터 자료형 타입
Definition Matrix.h:28
@ EMatrixTemplateType_Double
Definition Matrix.h:39
@ EMatrixTemplateType_Float
Definition Matrix.h:33
EAccuracy
연산 정확도
Definition DefinitionsMathematics.h:144
EMatrixReduceType
행렬 차원 축소 방향 타입
Definition Matrix.h:51
@ EMatrixReduceType_Both
Definition Matrix.h:56
@ EMatrixReduceType_Column
Definition Matrix.h:66
@ EMatrixReduceType_Row
Definition Matrix.h:61
EMatrixAxis
Definition DefinitionsMathematics.h:407
EMatrixSortOrder
Definition DefinitionsMathematics.h:429