Matrix class update.

This commit is contained in:
Krad
2023-04-19 15:54:52 +08:00
parent 0d98d313a5
commit 3b7c918cf1
4 changed files with 296 additions and 50 deletions

View File

@@ -8,28 +8,79 @@
#include "Matrix.h"
#include "Function1D.h"
#include "spdlog/spdlog.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include "spdlog/sinks/basic_file_sink.h"
int main() {
double * dataA =new double[9];
double * dataB =new double[9];
for (int i = 0; i < 9; ++i) {
dataA[i]=(double)(i+1);
dataB[i]=(double)(i+2);
{
double * dataA =new double[8];
double * dataB =new double[8];
double * dataC =new double[4];
for (int i = 0; i < 8; ++i) {
dataA[i]=(double)(i-3);
dataB[i]=(double)(i+2);
dataC[i/2]=(double)(i+9);
}
Aurora::Matrix A = Aurora::Matrix::New(dataA,2,2,2);
printf("A:\r\n");
A.printf();
Aurora::Matrix B = Aurora::Matrix::New(dataB,2,2,2);
printf("B:\r\n");
B.printf();
printf("A slice 1 = B slice 0\r\n");
A(Aurora::$,Aurora::$,1) = B(Aurora::$,Aurora::$,0);
printf("B:\r\n");
B.printf();
printf("New A:\r\n");
A.printf();
printf("A Row slice 1 = B Row slice 0\r\n");
A(1,Aurora::$,Aurora::$) = B(0,Aurora::$,Aurora::$);
printf("B:\r\n");
B.printf();
printf("New A:\r\n");
A.printf();
printf("A Col slice 1 = B Col slice 0\r\n");
A(Aurora::$,1,Aurora::$) = B(Aurora::$,0,Aurora::$);
printf("B:\r\n");
B.printf();
printf("New A:\r\n");
A.printf();
printf("New A col slice 1 toMatrix:\r\n");
auto Ds = A(Aurora::$,1,Aurora::$);
auto D = Ds.toMatrix();
D.printf();
Aurora::Matrix C = Aurora::Matrix::New(dataC,2,2);
printf("C:\r\n");
C.printf();
A(Aurora::$,Aurora::$,0) = C;
printf("New A:\r\n");
A.printf();
return 0;
}
Aurora::Matrix A = Aurora::Matrix::New(dataA,3,3);
A.printf();
Aurora::Matrix B = Aurora::Matrix::New(dataB,3,3);
printf("B:\r\n");
B.printf();
printf("A*B:\r\n");
(A*B).printf();
printf("A*B+A:\r\n");
(A*B+A).printf();
A = (A*B+A)+3.;
A.printf();
{
double * dataA =new double[9];
double * dataB =new double[9];
for (int i = 0; i < 9; ++i) {
dataA[i]=(double)(i-3);
dataB[i]=(double)(i+2);
}
Aurora::Matrix A = Aurora::Matrix::New(dataA,3,3);
printf("A:\r\n");
A.printf();
Aurora::Matrix B = Aurora::Matrix::New(dataB,3,3);
printf("B:\r\n");
B.printf();
printf("sign(A):\r\n");
sign(A*B).printf();
}
return 0;
}