FLImaging 7.9.7.9
FLImagingFoundation/Matrix.h
1#pragma once
2
8
9
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 Schur(CMatrix<Ty>* pMatrixU, CMatrix<Ty>* pMatrixT) const;
2187
2205 virtual const CResult SVD(CMatrix<Ty>* pMatrixU, CMatrix<Ty>* pMatrixSig, CMatrix<Ty>* pMatrixVT) const;
2206
2222 virtual const CResult QR(CMatrix<Ty>* pMatrixQ, CMatrix<Ty>* pMatrixR) const;
2223
2239 virtual const CResult LU(CMatrix<Ty>* pMatrixL, CMatrix<Ty>* pMatrixU) const;
2240
2258 virtual const CResult LUP(CMatrix<Ty>* pMatrixP, CMatrix<Ty>* pMatrixL, CMatrix<Ty>* pMatrixU) const;
2259
2271 virtual bool CheckRange(Ty tMin, Ty tMax) const;
2272
2292 virtual const CResult MulTransposed(const CMatrix<Ty>* pMatrixSource, CMatrix<Ty>* pMatrixDestination, int32_t i32Order, CMatrix<Ty>* pMatDelta = nullptr, double f64Scale = 1.) const;
2293
2307 virtual const CResult CrossProduct(const CMatrix<Ty>& matrixSource2, CMatrix<Ty>* pMatrixDestination) const;
2308
2322 virtual const CResult CrossProduct(const CMatrix<Ty>* pMatrixSource2, CMatrix<Ty>* pMatrixDestination) const;
2323
2337 virtual const CResult Reshape(int64_t i64Row, int64_t i64Column = -1);
2338
2348 virtual const CResult Abs();
2349
2359 virtual const CResult Sqrt();
2360
2370 virtual const CResult Ceil();
2371
2381 virtual const CResult Floor();
2382
2392 virtual const CResult Round();
2393
2403 virtual const CResult Sin();
2404
2414 virtual const CResult Cos();
2415
2425 virtual const CResult Tan();
2426
2436 virtual const CResult Arcsin();
2437
2447 virtual const CResult Arccos();
2448
2460 virtual const CResult Arctan2(const CMatrix<Ty>& matrixX);
2461
2473 virtual const CResult Arctan2(const CMatrix<Ty>* pMatrixX);
2474
2484 virtual const CResult Degrees();
2485
2495 virtual const CResult Radians();
2496
2506 virtual const CResult Log();
2507
2517 virtual const CResult Log2();
2518
2528 virtual const CResult Log10();
2529
2539 virtual const CResult Log1p();
2540
2554 virtual const CResult Clip(Ty tMin, Ty tMax);
2555
2569 virtual const CResult ArgMin(int64_t& i64ResultRow, int64_t& i64ResultColumn) const;
2570
2588 virtual const CResult ArgMin(Base::CFLArray<int64_t>& flaResultIndex, EMatrixAxis eAxis) const;
2589
2607 virtual const CResult ArgMin(Base::CFLArray<int64_t>* pFlaResultIndex, EMatrixAxis eAxis) const;
2608
2622 virtual const CResult ArgMax(int64_t& i64ResultRow, int64_t& i64ResultColumn) const;
2623
2641 virtual const CResult ArgMax(Base::CFLArray<int64_t>& flaResultIndex, EMatrixAxis eAxis) const;
2642
2660 virtual const CResult ArgMax(Base::CFLArray<int64_t>* pFlaResultIndex, EMatrixAxis eAxis) const;
2661
2681 virtual const CResult ArgSort(CMatrix<Ty>* pMatResultIndex = nullptr, EMatrixSortOrder eOrder = EMatrixSortOrder_Ascending, EMatrixAxis eAxis = EMatrixAxis_Column);
2682
2690 virtual Ty Min() const;
2691
2707 virtual const CResult Min(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2708
2724 virtual const CResult Min(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2725
2733 virtual Ty Max() const;
2734
2750 virtual const CResult Max(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2751
2767 virtual const CResult Max(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2768
2776 virtual Ty Sum() const;
2777
2793 virtual const CResult Sum(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2794
2810 virtual const CResult Sum(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2811
2819 virtual Ty Mean() const;
2820
2836 virtual const CResult Mean(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2837
2853 virtual const CResult Mean(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2854
2862 virtual Ty Std() const;
2863
2879 virtual const CResult Std(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
2880
2896 virtual const CResult Std(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
2897
2911 virtual const CResult HStack(const CMatrix<Ty>& matInput, CMatrix<Ty>* pMatResult = nullptr);
2912
2926 virtual const CResult HStack(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult = nullptr);
2927
2941 virtual const CResult VStack(const CMatrix<Ty>& matInput, CMatrix<Ty>* pMatResult = nullptr);
2942
2956 virtual const CResult VStack(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult = nullptr);
2957
2969 virtual const CResult Swap(CMatrix<Ty>& matRight);
2970
2982 virtual const CResult Swap(CMatrix<Ty>* pMatRight);
2983
3001 virtual const CResult Diff(CMatrix<Ty>& matResult, EMatrixAxis eAxis = EMatrixAxis_Column, int64_t i64Depth = 1) const;
3002
3020 virtual const CResult Diff(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis = EMatrixAxis_Column, int64_t i64Depth = 1) const;
3021
3033 virtual const CResult Dot(const CMatrix<Ty>* pMatInput);
3034
3048 virtual const CResult Dot(const CMatrix<Ty>* pMatInput, CMatrix<Ty>* pMatResult) const;
3049
3057 virtual double Prod() const;
3058
3076 virtual const CResult Prod(Base::CFLArray<double>& flaResult, EMatrixAxis eAxis) const;
3077
3095 virtual const CResult Prod(Base::CFLArray<double>* pFlaResult, EMatrixAxis eAxis) const;
3096
3108 virtual const CResult Unique(CMatrix<Ty>& matResult) const;
3109
3121 virtual const CResult Unique(CMatrix<Ty>* pMatResult) const;
3122
3138 virtual const CResult Unique(CMatrix<Ty>& matResult, EMatrixAxis eAxis) const;
3139
3155 virtual const CResult Unique(CMatrix<Ty>* pMatResult, EMatrixAxis eAxis) const;
3156
3164 virtual bool Any() const;
3165
3181 virtual const CResult Any(EMatrixAxis eAxis, CMatrix<Ty>& matResult) const;
3182
3198 virtual const CResult Any(EMatrixAxis eAxis, CMatrix<Ty>* pMatResult) const;
3199
3217 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>& matResult);
3218
3236 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>* pMatResult);
3237
3255 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>& matResult);
3256
3274 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>* pMatResult);
3275
3293 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, Ty tFalse, CMatrix<Ty>& matResult);
3294
3312 static const CResult Where(const CMatrix<Ty>& matCondition, const CMatrix<Ty>& matTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3313
3331 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, Ty tFalse, CMatrix<Ty>& matResult);
3332
3350 static const CResult Where(const CMatrix<Ty>* pMatCondition, const CMatrix<Ty>* pMatTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3351
3369 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>& matResult);
3370
3388 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, const CMatrix<Ty>& matFalse, CMatrix<Ty>* pMatResult);
3389
3407 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>& matResult);
3408
3426 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, const CMatrix<Ty>* pMatFalse, CMatrix<Ty>* pMatResult);
3427
3445 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>& matResult);
3446
3464 static const CResult Where(const CMatrix<Ty>& matCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3465
3483 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>& matResult);
3484
3502 static const CResult Where(const CMatrix<Ty>* pMatCondition, Ty tTrue, Ty tFalse, CMatrix<Ty>* pMatResult);
3503
3523 static const CResult SolveLU(CMatrix<Ty>* pMatL, CMatrix<Ty>* pMatU, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3524
3546 static const CResult SolveLUP(CMatrix<Ty>* pMatP, CMatrix<Ty>* pMatL, CMatrix<Ty>* pMatU, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3547
3565 static const CResult Solve(CMatrix<Ty>* pMatA, CMatrix<Ty>* pMatB, CMatrix<Ty>* pMatRes);
3566
3602 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);
3603
3627 static const CResult GetSimilarity(const CFLPointArray& flpaSrcPoints, const CFLPointArray& flpaDstPoints, CMatrix<Ty>* pMatResult);
3628
3652 static const CResult GetSimilarity(const CFLPointArray* pFlpaSrcPoints, const CFLPointArray* pFlpaDstPoints, CMatrix<Ty>* pMatResult);
3653
3679 static const CResult GetSimilarity(const Base::CFLArray<Base::TPoint<Ty>>& flaSrcPoints, const Base::CFLArray<Base::TPoint<Ty>>& flaDstPoints, CMatrix<Ty>* pMatResult);
3680
3706 static const CResult GetSimilarity(const Base::CFLArray<Base::TPoint<Ty>>* pFlaSrcPoints, const Base::CFLArray<Base::TPoint<Ty>>* pFlaDstPoints, CMatrix<Ty>* pMatResult);
3707
3735 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);
3736
3764 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);
3765
3779 virtual const CResult Save(const Base::CFLString<wchar_t>& strFilePath) const;
3780
3794 virtual const CResult Save(const Base::CFLString<wchar_t>* pStrFilePath) const;
3795
3809 virtual const CResult Load(const Base::CFLString<wchar_t>& strFilePath);
3810
3824 virtual const CResult Load(const Base::CFLString<wchar_t>* pStrFilePath);
3825
3839 virtual const CResult SaveCSV(const Base::CFLString<wchar_t>& strFilePath) const;
3840
3854 virtual const CResult SaveCSV(const Base::CFLString<wchar_t>* pStrFilePath) const;
3855
3869 virtual const CResult LoadCSV(const Base::CFLString<wchar_t>& strFilePath);
3870
3884 virtual const CResult LoadCSV(const Base::CFLString<wchar_t>* pStrFilePath);
3885
3886
3897
3911 virtual const CResult SetOperationAccuracy(EAccuracy eOperationAccuracy);
3912
3920 virtual bool IsReferenceEnabled() const;
3921
3922
3923
3924 SupportToDuplicateObject(CMatrix, *this);
3925 DeclareGetClassType();
3926
3927 private:
3928 const CResult InternalGetProcessingMode(Base::CProcessingUnitCPU::EInstruction* pEMode, int32_t* pCoreCount = nullptr) const;
3929
3930 protected:
3931 Ty* m_pTVectors;
3932 Ty** m_pTVectorsYCache;
3933 int64_t m_i64Column;
3934 int64_t m_i64Row;
3935 int64_t m_i64ElementCount;
3936 int64_t m_i64TotalSizeByte;
3937 bool m_bBufferCreated;
3938 bool m_bReference;
3939 EAccuracy m_eOperationAccuracy;
3940
3941 template <typename Ty>
3942 friend class FL_EXPORT CMatrixFor3D;
3943 };
3944
3945 typedef CMatrix<float> CMatrixF;
3946 typedef CMatrix<double> CMatrixD;
3947 }
3948}
3949
3950
Template type 의 배열 클래스.
Definition FLArray.h:71
FLImaging의 최상위 기저 클래스
Definition FLImagingBase/FLBase.h:36
Template type 의 문자열 클래스
Definition FLString.h:34
EInstruction
명령어
Definition FLImagingBase/ProcessingUnitCPU.h:40
점을 표현하는 간략화된 클래스
Definition FLImagingBase/TPoint.h:37
FLImaging 모듈의 수행 결과 객체
Definition FLImagingBase/ResultsDef.h:1704
점 배열을 표현하는 클래스
Definition FLImagingFoundation/FLPointArray.h:26
행렬을 표현하는 클래스
Definition FLImagingFoundation/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
CMatrix< float > operator<(const double &f64Param) 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 Schur(CMatrix< Ty > *pMatrixU, CMatrix< Ty > *pMatrixT) 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)
CMatrix< float > operator>(const double &f64Param) const
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)
Definition FLImagingFoundation/AlgorithmBase.h:16
EMatrixTemplateType
행렬 데이터 자료형 타입
Definition FLImagingFoundation/Matrix.h:28
@ EMatrixTemplateType_Double
Definition FLImagingFoundation/Matrix.h:39
@ EMatrixTemplateType_Float
Definition FLImagingFoundation/Matrix.h:33
EAccuracy
연산 정확도
Definition FLImagingFoundation/DefinitionsMathematics.h:144
EMatrixReduceType
행렬 차원 축소 방향 타입
Definition FLImagingFoundation/Matrix.h:51
@ EMatrixReduceType_Both
Definition FLImagingFoundation/Matrix.h:56
@ EMatrixReduceType_Column
Definition FLImagingFoundation/Matrix.h:66
@ EMatrixReduceType_Row
Definition FLImagingFoundation/Matrix.h:61
EMatrixAxis
Definition FLImagingFoundation/DefinitionsMathematics.h:407
@ EMatrixAxis_Column
Definition FLImagingFoundation/DefinitionsMathematics.h:418
EMatrixSortOrder
Definition FLImagingFoundation/DefinitionsMathematics.h:429
@ EMatrixSortOrder_Ascending
오름차순 정렬
Definition FLImagingFoundation/DefinitionsMathematics.h:436