#include <iostream>
#include "TrMatrix_Main.h"
using namespace std;
typedef CTrMatrix_Shell<double> matrix;
int main()
{
int a0[]={1,2,3,4};
matrix a=matrix::unit(4); //4阶单位阵。
matrix c(a);
a(1,2)=2; //此时矩阵a的副本c任然不变。
cout<<a<<c<<endl;
c=a; //此时c是a的一个副本。
a(2,1,false)=10; //此时矩阵所有的副本(比如c)都会改变,如果确定矩阵没有副本使用此方法可以提升速度。
cout<<a<<c<<endl;
cout<<a.inv()<<endl; //逆矩阵。
matrix b(a(1)*a(_ALL,2)); //矩阵a的第一行乘以矩阵的第二列,结果赋给b。相当于MATLAB语句:b=a(1,:)*a(:,2)。
cout<<b<<endl;
_index id1,id2; //_index类型继承自vector<size_t>,用来表示子矩阵取自原矩阵的那些行(列)。
id1.push_back(1);
id1.push_back(2);
id2.push_back(3);
id2.push_back(4);
a(id1)+=a(id2); //将三、四行构成的子矩阵加到一、二行。相当于MATLAB语句:a(1:2,:)=a(1:2,:)+a(3:4,:)。
cout<<a<<endl;
b=(b|b|b|b)&a; //将四个b纵向合并构成的矩阵横向合并a,赋给b。相当于MATLAB语句:b=[[b;b;b;b],a]。
cout<<b<<endl;
b.swap_col(2,3); //交换b的二、三列。
cout<<b<<endl;
}
- 1
- 2
- 3
- 4
- 5
- 6
前往页