// E004
//http://www.orsci.cn
//功能:演示matrix的基本操作
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#include "orsciVM.h"
using namespace orsci; //orsci包的命名空间。
int _tmain(int argc, _TCHAR* argv[])
{
mdouble a; //浮点类型的矩阵
a = "[1,2,12,8; 4,7,16, 2; 5,0,8,9]";
cout << "矩阵..." << endl;
cout << a << endl;
cout << "最小值..." << endl;
cout << vmt::minv(a, 0) << endl;
cout << vmt::minv(a, 1) << endl;
cout << "最大值..." << endl;
cout << vmt::maxv(a, 0) << endl;
cout << vmt::maxv(a, 1) << endl;
cout << "求和..." << endl;
cout << vmt::sum(a, 0) << endl;
cout << vmt::sum(a, 1) << endl;
cout << "均值..." << endl;
cout << vmt::mean(a, 0) << endl;
cout << vmt::mean(a, 1) << endl;
cout << "样本方差..." << endl;
cout << vmt::var(a, 0) << endl;
cout << vmt::var(a, 1) << endl;
cout << "总体方差..." << endl;
cout << vmt::var_pop(a, 0) << endl;
cout << vmt::var_pop(a, 1) << endl;
cout << "样本标准差..." << endl;
cout << vmt::stddev(a, 0) << endl;
cout << vmt::stddev(a, 1) << endl;
cout << "总体标准差..." << endl;
cout << vmt::stddev_pop(a, 0) << endl;
cout << vmt::stddev_pop(a, 1) << endl;
cout << "中位数..." << endl;
cout << vmt::median(a, 0) << endl;
cout << vmt::median(a, 1) << endl;
cout << "原矩阵..." << endl;
cout << a << endl;
cout << "矩阵第1行(注:0开始索引)..." << endl;
cout << a.Row(1) << endl;
cout << "矩阵列赋值..." << endl;
a.Col(2).assign("10:12");
cout << a << endl;
cout << "矩阵部分视图..." << endl;
cout << a.view("0, 1", "1:3") << endl; //重新按照行和列映射
cout << a.view("1:2", "2,1, 0") << endl;
cout << "矩阵转置..." << endl;
cout << a.T() << endl;
cout << "矩阵伪逆矩阵..." << endl;
cout << vmt::pinv(a) << endl;
cout << "a * pinv(a) = " << a * vmt::pinv(a) << endl;
cout << "pinv(a) * a = " << vmt::pinv(a) * a << endl;
cout << "矩阵乘法z = a * a.T()..." << endl;
mdouble z = a * a.T();
cout << z << endl;
cout << "逆矩阵z(-1)..." << endl;
cout << vmt::inv(z) << endl;
cout << "矩阵z与其逆矩阵(-1)的乘积..." << endl;
cout << z * vmt::inv(z) << endl;
cout << "Press any key to continue...";
char pp;
cin >> pp;
return 0;
} |