目前实现的:
-
CSV,dat,txt等格式化文件读取:
Matrix read_csv(string &file_path)
精度double
例如:
-
Csv,txt,dat,等格式化文件流读取,转化为矩阵,获取尺寸.
-
矩阵运算部分:
使用案例:
welcome();
Matrix a = CreateMatrix(5,6);
cout<<"end"<<endl;
change_va(a,1,2,1);
change_va(a,2,3,7);
change_va(a,3,3,2);
change_va(a,4,3,4);
change_va(a,0,0,9);
change_va(a,0,2,2);
change_va(a,1,1,8);
start = clock();
cout<<"matrix sum: "<<matrix_sum(a)<<endl;
cout<<"matrix mean: "<<matrix_mean(a)<<endl;
cout<<"matrix T: "<<endl;
Matrix b = get_T(a);
for(int index_x = 0;index_x<b.row;index_x++)
{
for(int index_y=0;index_y<b.col;index_y++)
{
cout<<b.matrix[index_x][index_y]<<" ";
}
cout<<endl;
}
cout<<"-----------split line-----------"<<endl;
cout<<"matrix*n"<<endl;
Matrix c = times_mat(8,b);
for(int index_x = 0;index_x<c.row;index_x++)
{
for(int index_y=0;index_y<c.col;index_y++)
{
cout<<c.matrix[index_x][index_y]<<" ";
}
cout<<endl;
}
cout<<"-----------split line-----------"<<endl;
cout<<"matrix*matrix"<<endl;
Matrix d =mul(c,get_T(c));
for(int index_x = 0;index_x<d.row;index_x++)
{
for(int index_y=0;index_y<d.col;index_y++)
{
cout<<d.matrix[index_x][index_y]<<" ";
}
cout<<endl;
}
cout<<"-----------split line-----------"<<endl;
Matrix rs = matrix_rs(a,6,5);
for(int index_x = 0;index_x<rs.row;index_x++)
{
for(int index_y=0;index_y<rs.col;index_y++)
{
cout<<rs.matrix[index_x][index_y]<<" ";
}
cout<<endl;
}
times_mat(5,a);
stop = clock();
printf("%f\n", (double)(stop - start) / CLOCKS_PER_SEC);
return 0;
矩阵部分API:
-
Create a matrix : create(row,cols)
-
Change the element for matrix void move_ele(int &ele1, int &ele2)
-
Matrix1+Matrix2 : Matrix add(Matrix mid1,Matrix mid2,int flag=1)
-
Flag is how to compete the ele ,default 1 ,bitwise operation(位运算加速).
-
Matrix1-Matrix2 : Matrix subtract(Matrix mid1,Matrix mid2)
-
Matrix1*Matrix2 : Matrix mul(Matrix mid1,Matrix mid2)
-
Matrix1*n : Matrix times_mat(int times,Matrix mid1)
-
Matrix1's Transposition : Matrix get_T(Matrix mid1)
-
Mul(matrix1,matrix2)
矩阵A:
第1列 | 第2列 | 第3列 | 第4列 | 第5列 |
---|---|---|---|---|
72.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 64.0000 | 0.0000 | 0.0000 | 0.0000 |
16.0000 | 8.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 56.0000 | 16.0000 | 32.0000 |
0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
矩阵B:
第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 |
---|---|---|---|---|---|
72.0000 | 0.0000 | 16.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 64.0000 | 8.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 56.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 16.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 32.0000 | 0.0000 | 0.0000 |
To
第1列 | 第2列 | 第3列 | 第4列 | 第5列 | 第6列 |
---|---|---|---|---|---|
5184.0000 | 0.0000 | 1152.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 4096.0000 | 512.0000 | 0.0000 | 0.0000 | 0.0000 |
1152.0000 | 512.0000 | 320.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 4416.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
- double* flatten(Matrix mid1)
1 | 2 | 3 |
---|---|---|
2 | 4 | 6 |
7 | 8 | 9 |
To
1 | 2 | 3 | 2 | 4 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|
Like numpy.flatten |
-
Return a flattened array.
-
Matrix matrix_rs(Matrix mid1,int rs_row,int rs_col)
-
double matrix_sum(Matrix mid1)
-
double matrix_mean(Matrix mid1)
Something :
- 创建矩阵,默认为1^n
- 动态分配内存,防止矩阵过大
- 可修改的地方(已完成)
- 为了能够节省内存后期删除,采用使用指针临时开辟数组空间
- 在main中使用完记得delete(matrix);
- 利用某个地址赋值方法,更新矩阵的值
- 已实现实现更新单个或者多个
- 具体文档不多赘述,详情见源代码.
- 欢迎🏃关注和star.
个人小站:极度空间
作者邮箱:zk@likedge.top | edge@ibooker.org.cn
还有很多地方值得去打磨,欢迎加入这个项目,一起完善内核。
QQ:2533524298