matlab2c基础使用教程(实矩阵、复矩阵)

来源:互联网 发布:淘宝男士皮鞋哪家好 编辑:程序博客网 时间:2024/06/08 12:39

全栈工程师开发手册 (作者:栾鹏)

matlab2c动态链接库下载
matlab库函数大全
matlab2c基础教程
matlab2c开发全解教程

开发注意事项:

1、目前matlab2c对矩阵的实现仅包含实数型、复数型数据。实数型矩阵使用Matrix定义,复数型矩阵使用CMatrix定义。
2、实数矩阵元素int、float元素类型会自动转为double。 复数元素类型为c++标准复数std::complex<double>使用typedef别名定义为Complex
3、本应用开发环境为vs2012,建议使用c++11编译器
4、借助广大网友的力量,动态链接库会实时更新实现更多的函数功能,欢迎下载最新版2017-12-06。
5、开发中请尽量规范代码编写,调用函数使用Matlab2c::xx函数,避免与其他库同名函数、同名变量的冲突
6、使用动态链接库dll,文件较小,需要匹配的调试环境。静态链接库,文件较大,不需要匹配的调试环境。

matlab2c开发调用方法(2选1):

使用动态链接库:
1、将Matlab2c.dll拷贝到exe同目录下
2、将Matlab2c.h、Matlab2c.lib放到项目头文件目录下
3、在cpp文件中引入下面的代码

#include "Matlab2c.h"#pragma comment(lib,"Matlab2c.lib")  using namespace Matlab2c;

使用静态链接库:
1、将Matlab2c.h、Matlab2c.lib放到项目头文件目录下
2、在cpp文件中引入下面的代码

#include "Matlab2c.h"#pragma comment(lib,"Matlab2c.lib")  using namespace Matlab2c;

matlab2c实数矩阵基础语法

#include "Matlab2c.h"#pragma comment(lib,"Matlab2c.lib")  using namespace Matlab2c;//声明三个调用函数double map_fun(double item,int row,int column,Matrix& src);double map_row_fun(double prev,double cur,int row,int column,Matrix& src);double map_column_fun(double prev,double cur,int row,int column,Matrix& src);int main(){    try{    //生成矩阵    Matrix matrix1();   //定义一个空矩阵    Matrix matrix2(2,3);  //定义矩阵行列,但是不定义矩阵元素的值    Matrix matrix3(2,3,1.1);  //定义矩阵行列,同时设置所有元素的值等于第三个参数    Matrix matrix3_1(3.14);  //定义一个1x1的矩阵    cout<<"matrix3_1:\n"<<matrix3_1.toString()<<endl;   //输出矩阵    //使用double[]定义矩阵    double a[]={1,2,3,4,5,6};    Matrix matrix4(2,3,a);    //使用一维数组定义一个矩阵,矩阵元素个数小于等于数组元素个数    Matrix matrix5(1,6,a);    //定义一个行向量    Matrix matrix6(5,1,a);    //定义一个列向量,不使用全部数据    cout<<"matrix6:\n"<<matrix6.toString()<<endl;   //输出矩阵    //使用vector<>和vector<vector<>>定义矩阵    vector<double> ivec(a, a+6);  //定义一个vector    Matrix matrix6_1(ivec);   //使用vector定义一列矩阵(列向量)    Matrix matrix6_2(ivec,2,3);   //使用vector定义矩阵    vector<double> ivec1(a, a+6);    vector<vector<double>> arr;    //定义一个vector<vector<>>    arr.push_back(ivec);    arr.push_back(ivec1);    Matrix matrix6_3(arr);   //使用vector<vector<double>>定义矩阵    cout<<"matrix6_3:\n"<<matrix6_3.toString()<<endl;   //输出矩阵    //使用double[][]定义矩阵    double aa[2][3]={{1,2,3},{4,5,6}} ;    Matrix matrix7(2,3,(double*)aa);        //使用二维数组定义一个矩阵,矩阵元素个数小于等于数组元素个数    Matrix matrix8("[1,2,3;4,5,6]");        //使用matlab语法字符串生成矩阵,分号表示换行    Matrix matrix9("[1 2 3;4,5,6]");        //逗号或空格表示分列,    Matrix matrix10("1 2 3;4,5,6;7 8 9");   //[]包含一个矩阵,可以省略    Matrix matrix11("[1:2:8;4,5,6,7]");     //可以使用x1:x2:x3的数列形式表示一行数据,x1为首元素,x2为步长,x3为终点    Matrix matrix12("[1:4;4,5,6,7]");       //可以使用x1:x3的数列形式表示一行数据,x1为首元素,x3为终点,步长为1    Matrix matrix12_1=Matrix("1:3:12");             //生成向量    matrix12_1 = Matrix("1:12");                //生成向量    matrix12_1 = Matlab2c::linspace(1,12,13);   //使用函数生成向量,参数为起点,终点,数量    cout<<"matrix12_1:\n"<<matrix12_1.toString()<<endl;   //输出矩阵    //复制和赋值    Matrix matrix13 = matrix12;             //复制生成一个矩阵,复制所有元素。[1,2,3,4;4,5,6,7]    Matrix matrix14;    matrix14=matrix12;      //赋值一个矩阵,复制所有元素    cout<<"matrix14:\n"<<matrix14.toString()<<endl;   //输出矩阵    //元素读取和赋值    double dtemp=82.5;    matrix14(0,1) = dtemp;   //矩阵元素赋值,下标从0开始    dtemp = matrix14(1,0);   //读取矩阵元素,下标从0开始    matrix5(0)=dtemp;   //向量元素赋值,下标从0开始    dtemp = matrix5(1);  //读取向量元素,下标从0开始    //子矩阵读取    Matrix matrix15=matrix10(1,2,0,2);  //参数起始行(包含)、终止行(包含)、起始列(包含)、终止列(包含)    Matrix matrix16=matrix10("1:2,0:1:2");  //读取子矩阵,下标从0开始    Matrix matrix17=matrix6("0:2:5");  //读取子向量,下标从0开始    cout<<"matrix17:\n"<<matrix17.toString()<<endl;   //输出矩阵    //矩阵转置    matrix17 = matrix4.T();   //T函数为转置    cout<<"matrix17:\n"<<matrix17.toString()<<endl;   //输出矩阵    //矩阵的运算    double arr1[]={1,2,3,4,5,6};    double arr2[]={6,5,4,3,2,1};    Matrix matrix18(2,3,arr1);    Matrix matrix19(2,3,arr2);    //矩阵加法    Matrix matrix20=matrix18+matrix19;   //矩阵相加    matrix20 +=matrix18;    //矩阵+=运算符    matrix20 = matrix18+1;  //矩阵加上常数,每个元素均加上常数    matrix20 +=1;   //矩阵+=运算符    cout<<"matrix20:\n"<<matrix20.toString()<<endl;   //输出矩阵    //矩减法    matrix20 =matrix18-matrix19;  //矩阵相减    matrix20 -=matrix18;  //矩阵-=运算符    matrix20 = matrix18-1;  //矩阵减去常数,每个元素均减去常数    matrix20 -=1;   //矩阵-=运算符    cout<<"matrix20:\n"<<matrix20.toString()<<endl;   //输出矩阵    //矩阵乘法    matrix19 = Matrix(3,2,arr2);    matrix20 =matrix18*matrix19;  //矩阵相乘,    matrix20 =matrix18*3;  //矩阵乘以常数,每个元素均乘以常数    matrix20 *=3;  //矩阵常数的*=运算    cout<<"matrix20:\n"<<matrix20.toString()<<endl;   //输出矩阵    //矩阵除法    matrix20 = matrix18/3;  //矩阵除以常数,每个元素均除以常数    matrix20 /=3;   //矩阵常数的/=运算    cout<<"matrix20:\n"<<matrix20.toString()<<endl;   //输出矩阵    //矩阵点运算    Matrix matrix20_1=matrix18.dot(matrix4,"+");   //点运算要求两个矩阵行列数相同    matrix20_1=matrix18.dot(matrix4,"-");    matrix20_1=matrix18.dot(matrix4,"*");    matrix20_1=matrix18.dot(matrix4,"/");    matrix20_1=matrix18.dot(matrix4,"\\");      //右除函数\在字符串中会被理解为转义符号,所以需要\\代表右除    cout<<"matrix20_1:\n"<<matrix20_1.toString()<<endl;   //输出矩阵    //矩阵正负号运算    Matrix matrix21=-matrix18;    //负号表示每个元素都取反    matrix21=+matrix18;  //正号表示元素不变    cout<<"matrix21:\n"<<matrix21.toString()<<endl;   //输出矩阵    //矩阵相等和不等判断    if (matrix18==matrix4)   //矩阵相等性判断,每个元素均相等,要求行列数和每个元素都相等        if (matrix4!=matrix5)  //矩阵的不相等性判断,行数、列数或其中任意一个元素不相等都会判断为不相等            cout<<"矩阵18和矩阵4相等,矩阵4和矩阵5不相等"<<endl;    //判断矩阵是否为行向量或列向量    if (matrix5.isVector())        cout<<"矩阵5是向量"<<endl;    //矩阵横向和纵向扩展,改变源矩阵    Matrix matrix22=matrix18;   //[1,2,3;4,5,6]    matrix22.append_left(matrix3);   //在矩阵左侧扩展,改变了源矩阵,返回void,要求两个矩阵行数相等,等价于[matrix3,matrix22]    matrix22=matrix18;    matrix22.append_right(matrix3);   //在矩阵右侧扩展,改变了源矩阵,返回void,要求两个矩阵行数相等,等价于[matrix22,matrix3]    matrix22=matrix18;    matrix22.append_top(matrix3);   //在矩阵顶部扩展,改变了源矩阵,返回void,要求两个矩阵列数相等,等价于[matrix3;matrix22]    matrix22=matrix18;    matrix22.append_bottom(matrix3);   //在矩阵下部扩展,改变了源矩阵,返回void,要求两个矩阵列数相等,等价于[matrix22;matrix3]    cout<<"matrix22:\n"<<matrix22.toString()<<endl;   //输出矩阵    //矩阵删除行列,改变源矩阵    Matrix matrix23=matrix10;   //[1 2 3;4,5,6;7 8 9]    matrix23.remove_row(1);   //删除矩阵指定行,下标从0开始    matrix23=matrix10;    matrix23.remove_row(0,1);  //删除矩阵多行,起始行下标(包含),终止行下标(包含),下标从0开始    matrix23=matrix10;    matrix23.remove_column(1);  //删除矩阵指定列,下标从0开始    matrix23=matrix10;    matrix23.remove_column(1,2);  //删除矩阵多列,起始列下标(包含),终止列下标(包含),下标从0开始    matrix23=matrix10;    matrix23.remove_row_column(1,1);  //删除矩阵指定行和指定列,下标从0开始    matrix23=matrix10;    matrix23.remove_row_column(0,1,1,1);  //删除矩阵多行和多列,起始行下标(包含),终止行下标(包含),起始列下标,终止列下标,下标从0开始    cout<<"matrix23:\n"<<matrix23.toString()<<endl;   //输出矩阵    //替换子矩阵    matrix10.replace(matrix8,0,1);    //matrix8为[1,2,3;4,5,6],matrix10为[1,2,3;4,5,6;7,8,9]    cout<<"matrix10:\n"<<matrix10.toString()<<endl;   //输出矩阵    //矩阵遍历    Matrix matrix24;    //[1,2,3;4,5,6]    matrix24 = matrix18.map(map_fun);   //map函数遍历每一个元素,不改变源矩阵    matrix24 = matrix18.map_row(map_row_fun);   //map函数按行遍历每一行,不改变源矩阵。每一行返回一个值,最后获得一个列向量    matrix24 = matrix18.map_column(map_column_fun);   //map函数按列遍历每一列,不改变源矩阵。每一列返回一个值,最后获得一个行向量    cout<<"matrix24:\n"<<matrix24.toString()<<endl;   //输出矩阵    //矩阵类型的转化    Matrix matrix25=matrix4;    //[1 2 3;4,5,6]    string str=matrix25.toString();   //转化为字符串,每个元素保留4位小数    double *arr3 = matrix25.toSeries();  //转化为一维数组    double **arr4 = matrix25.toArray();  //转化为二维数组    vector<double> vec1 = matrix25.toVector();  //转化为一维向量vector    vector<vector<double>> vec2 = matrix25.toVector2();  //转化为二维向量vector    cout<<vec2[1][1]<<endl;    }    catch(exception err)    {        cout<<err.what()<<endl;    }    system("pause");    return 0;}//定义一个遍历函数(格式固定)。输入参数:当前元素的值,所属行,所属列,源矩阵。返回当前元素的替代值。//此处的遍历函数为每一个元素加上1 double map_fun(double item,int row,int column,Matrix& src) {     return item+1; } //定义一个按行遍历函数(固定格式),每一行得到一个值 //输入参数:前一个元素,当前元素,当前元素所属行,当前元素所属列,源矩阵。 //迭代从第二项开始,prev初始值为第一项,cur初始值为第二项。计算值自动传给下一函数的prev,返回最后一次迭代产生的值 //此处的按行遍历函数求每行中的最大值 double map_row_fun(double prev,double cur,int row,int column,Matrix& src) {     if(prev>cur)         return prev;     return cur; } //定义一个按列遍历函数(固定格式),每一列得到一个值  //输入参数:前一个元素,当前元素,当前元素所属行,当前元素所属列,源矩阵 //迭代从第二项开始,prev初始值为第一项,cur初始值为第二项。计算值自动传给下一函数的prev,返回最后一次迭代产生的值 //此处的按列遍历函数求每列中的平均值 double map_column_fun(double prev,double cur,int row,int column,Matrix& src) {     if(row==src.row-1)  //如果遍历到最后一行数据        return (prev+cur)/src.row;   //加上当前项,再取平均    return prev+cur;        //前一项加上当前项,获得的和向后传递 }

matlab2c实数矩阵基础语法

#include "Matlab2c.h"#pragma comment(lib,"Matlab2c.lib")  using namespace Matlab2c;//在Matlab2c空间中,使用typedef std::complex<double> Complex将c++标准复数重命名为Complex,所以Complex的使用遵循标准复数的使用//声明三个调用函数Complex map_fun(Complex item,int row,int column,CMatrix& src);Complex map_row_fun(Complex prev,Complex cur,int row,int column,CMatrix& src);Complex map_column_fun(Complex prev,Complex cur,int row,int column,CMatrix& src);int main(){    Complex com0= Complex(0,0);    Complex com1 = Complex(1,1);    Complex com2 = Complex(2,2);    Complex com3 = Complex(3,3);    Complex com4 = Complex(4,4);    Complex com5 = Complex(5,5);    Complex com6 = Complex(6,6);    Complex com7 = Complex(7,7);    Complex com8 = Complex(8,8);    Complex com9 = Complex(9,9);    cout<<com1+2.0<<endl;                               //Complex在运算中只能将double型数据自动转化为Complex    try{    //生成矩阵    double a0[]={1,2,3,4,5,6};    double a1[]={1,2,3,4,5,6};    CMatrix matrix1();                                  //定义一个空矩阵    CMatrix matrix2(2,3);                               //定义矩阵行列,但是不定义矩阵元素的值    CMatrix matrix3(2,3,Complex(1,-1));                 //定义矩阵行列,同时设置所有元素的值等于第三个参数    CMatrix matrix4(3.14);                              //定义一个1x1的矩阵,可以使用一个实数,会自动转为复数    CMatrix matrix4_1(Matrix(a0,2,3));                  //使用实数矩阵生成复数矩阵,虚部为0    CMatrix matrix4_2(Matrix(a0,2,3),Matrix(a0,2,3));   //使用两个实数矩阵生成复数矩阵,分别为实部和虚部    CMatrix matrix4_3(2,3,a0,a1);                       //使用两个实数数组生成复数矩阵,分别为实部和虚部    CMatrix matrix4_4(a0,a1,2,3);                       //使用两个实数数组生成复数矩阵,分别为实部和虚部    cout<<"matrix4_4:\n"<<matrix4_4.toString()<<endl;   //输出矩阵    //使用double[]定义矩阵    Complex a[6] = {com1,com2,com3,com4,com5,com6};    CMatrix matrix5(2,3,a);                             //使用一维数组定义一个矩阵,矩阵元素个数小于等于数组元素个数    CMatrix matrix6(1,6,a);                             //定义一个行向量    CMatrix matrix7(5,1,a);                             //定义一个列向量,不使用全部数据    cout<<"matrix7:\n"<<matrix7.toString()<<endl;       //输出矩阵    //使用vector<>和vector<vector<>>定义矩阵    vector<Complex> ivec(a, a+6);                       //定义一个vector    CMatrix matrix8(ivec);                              //使用vector定义一列矩阵(列向量)    CMatrix matrix9(ivec,2,3);                          //使用vector定义矩阵    vector<Complex> ivec1(a, a+6);    vector<vector<Complex>> arr;                        //定义一个vector<vector<>>    arr.push_back(ivec);    arr.push_back(ivec1);    CMatrix matrix10(arr);                              //使用vector<vector<double>>定义矩阵    cout<<"matrix10:\n"<<matrix10.toString()<<endl;     //输出矩阵    ////使用double[][]定义矩阵    Complex aa[2][3]={{com1,com2,com3},{com4,com5,com6}} ;    CMatrix matrix11(2,3,(Complex*)aa);                 //使用二维数组定义一个矩阵,矩阵元素个数小于等于数组元素个数    cout<<"matrix11:\n"<<matrix11.toString()<<endl;     //输出矩阵    //复制和赋值    CMatrix matrix12 = matrix5;                         //复制生成一个矩阵,复制所有元素。    CMatrix matrix13;    matrix13=matrix5;                                   //赋值一个矩阵,复制所有元素    cout<<"matrix13:\n"<<matrix13.toString()<<endl;     //输出矩阵    //元素读取和赋值    matrix13(0,1) = com0;                               //矩阵元素赋值,下标从0开始    com0 = matrix13(1,0);                               //读取矩阵元素,下标从0开始    matrix7(0)=com0;                                    //向量元素赋值,下标从0开始    com0 = matrix7(1);                                  //读取向量元素,下标从0开始    //子矩阵读取    CMatrix matrix14=matrix5(0,1,0,2);                  //参数起始行(包含)、终止行(包含)、起始列(包含)、终止列(包含)    cout<<"matrix14:\n"<<matrix14.toString()<<endl;     //输出矩阵    //矩阵转置    CMatrix matrix15 = matrix5.T();                     //T函数为转置    cout<<"matrix15:\n"<<matrix15.toString()<<endl;     //输出矩阵    //矩阵的运算    Complex arr1[]={com1,com2,com3,com4,com5,com6};    Complex arr2[]={com6,com5,com4,com3,com2,com1};    CMatrix matrix16(2,3,arr1);    CMatrix matrix17(2,3,arr2);    //矩阵加法    CMatrix matrix18=matrix16+matrix17;                 //矩阵相加    matrix18 +=matrix16;                                //矩阵+=运算符    matrix18 = matrix16+1;                              //矩阵加上常数,每个元素均加上常数    matrix18 +=com1;                                    //矩阵+=运算符    cout<<"matrix18:\n"<<matrix18.toString()<<endl;     //输出矩阵    //矩减法    matrix18 =matrix16-matrix17;                        //矩阵相减    matrix18 -=matrix16;                                //矩阵-=运算符    matrix18 = matrix16-1;                              //矩阵减去常数,每个元素均减去常数    matrix18 -=com1;                                    //矩阵-=运算符    cout<<"matrix18:\n"<<matrix18.toString()<<endl;     //输出矩阵    //矩阵乘法    matrix17 = CMatrix(3,2,arr2);    matrix18 =matrix16*matrix17;                        //矩阵相乘,    cout<<"matrix18:\n"<<matrix18.toString()<<endl;     //输出矩阵    matrix18 =matrix18*3.0;                             //矩阵乘以常数,每个元素均乘以常数    matrix18 *=com1;                                    //矩阵常数的*=运算    cout<<"matrix18:\n"<<matrix18.toString()<<endl;     //输出矩阵    //矩阵除法    matrix18 = matrix16/3.0;                            //矩阵除以常数,每个元素均除以常数    matrix18 /=com1;                                    //矩阵常数的/=运算    cout<<"matrix18:\n"<<matrix18.toString()<<endl;     //输出矩阵    //矩阵点运算    CMatrix matrix19=matrix16.dot(matrix5,"+");         //点运算要求两个矩阵行列数相同    matrix19=matrix16.dot(matrix5,"-");    matrix19=matrix16.dot(matrix5,"*");    matrix19=matrix16.dot(matrix5,"/");    matrix19=matrix16.dot(matrix5,"\\");                //右除函数\在字符串中会被理解为转义符号,所以需要\\代表右除    cout<<"matrix19:\n"<<matrix19.toString()<<endl;     //输出矩阵    //矩阵正负号运算    CMatrix matrix20=-matrix16;                         //负号表示每个元素都取反    matrix20=+matrix16;                                 //正号表示元素不变    cout<<"matrix20:\n"<<matrix20.toString()<<endl;     //输出矩阵    //矩阵相等和不等判断    if (matrix16==matrix5)                              //矩阵相等性判断,每个元素均相等,要求行列数和每个元素都相等        if (matrix5!=matrix6)                           //矩阵的不相等性判断,行数、列数或其中任意一个元素不相等都会判断为不相等            cout<<"矩阵16和矩阵5相等,矩阵5和矩阵6不相等"<<endl;    //判断矩阵是否为行向量或列向量    if (matrix6.isVector())        cout<<"矩阵6是向量"<<endl;    //矩阵横向和纵向扩展,改变源矩阵    CMatrix matrix21=matrix16;      matrix21.append_left(matrix3);                      //在矩阵左侧扩展,改变了源矩阵,返回void,要求两个矩阵行数相等,等价于[matrix3,matrix21]    matrix21=matrix16;    matrix21.append_right(matrix3);                     //在矩阵右侧扩展,改变了源矩阵,返回void,要求两个矩阵行数相等,等价于[matrix21,matrix3]    matrix21=matrix16;    matrix21.append_top(matrix3);                       //在矩阵顶部扩展,改变了源矩阵,返回void,要求两个矩阵列数相等,等价于[matrix3;matrix21]    matrix21=matrix16;    matrix21.append_bottom(matrix3);                    //在矩阵下部扩展,改变了源矩阵,返回void,要求两个矩阵列数相等,等价于[matrix21;matrix3]    cout<<"matrix21:\n"<<matrix21.toString()<<endl;     //输出矩阵    //矩阵删除行列,改变源矩阵    Complex b1[9] = {com1,com2,com3,com4,com5,com6,com7,com8,com9};    CMatrix matrix22(3,3,b1);    CMatrix matrix23=matrix22;    matrix23.remove_row(1);                             //删除矩阵指定行,下标从0开始    matrix23=matrix22;    matrix23.remove_row(0,1);                           //删除矩阵多行,起始行下标(包含),终止行下标(包含),下标从0开始    matrix23=matrix22;    matrix23.remove_column(1);                          //删除矩阵指定列,下标从0开始    matrix23=matrix22;    matrix23.remove_column(1,2);                        //删除矩阵多列,起始列下标(包含),终止列下标(包含),下标从0开始    matrix23=matrix22;    matrix23.remove_row_column(1,1);                    //删除矩阵指定行和指定列,下标从0开始    matrix23=matrix22;    matrix23.remove_row_column(0,1,1,1);                //删除矩阵多行和多列,起始行下标(包含),终止行下标(包含),起始列下标,终止列下标,下标从0开始    cout<<"matrix23:\n"<<matrix23.toString()<<endl;     //输出矩阵    //替换子矩阵    matrix22.replace(matrix5,0,1);                      //matrix5为[1,2,3;4,5,6],matrix22为[1,2,3;4,5,6;7,8,9]    cout<<"matrix22:\n"<<matrix22.toString()<<endl;     //输出矩阵    //矩阵遍历    matrix23 = matrix5.map(map_fun);                    //map函数遍历每一个元素,不改变源矩阵    matrix23 = matrix5.map_row(map_row_fun);            //map函数按行遍历每一行,不改变源矩阵。每一行返回一个值,最后获得一个列向量    matrix23 = matrix5.map_column(map_column_fun);      //map函数按列遍历每一列,不改变源矩阵。每一列返回一个值,最后获得一个行向量    cout<<"matrix23:\n"<<matrix23.toString()<<endl;     //输出矩阵    //复矩阵属性函数    Matrix matrix24;    matrix24 = matrix5.real();                          //求实部矩阵    matrix24 = matrix5.imag();                          //求虚部矩阵    matrix24 = matrix5.angle();                         //求角度矩阵    matrix24 = matrix5.abs();                           //求模值矩阵    CMatrix matrix24_1 = matrix5.conj();                //求共轭矩阵    cout<<"matrix24_1:\n"<<matrix24_1.toString()<<endl; //输出矩阵    //矩阵类型的转化    CMatrix matrix25=matrix5;    string str=matrix25.toString();                     //转化为字符串,每个元素保留4位小数    Complex *arr3 = matrix25.toSeries();                //转化为一维数组    Complex **arr4 = matrix25.toArray();                //转化为二维数组    vector<Complex> vec1 = matrix25.toVector();         //转化为一维向量vector    vector<vector<Complex>> vec2 = matrix25.toVector2();//转化为二维向量vector    cout<<vec2[1][1]<<endl;    }    catch(exception err)    {        cout<<err.what()<<endl;    }    system("pause");    return 0;}//定义一个遍历函数(格式固定)。输入参数:当前元素的值,所属行,所属列,源矩阵。返回当前元素的替代值。//此处的遍历函数为每一个元素加上1+1j Complex map_fun(Complex item,int row,int column,CMatrix& src) {     Complex com1(1,1);     return (item+com1); } //定义一个按行遍历函数(固定格式),每一行得到一个值 //输入参数:前一个元素,当前元素,当前元素所属行,当前元素所属列,源矩阵。 //迭代从第二项开始,prev初始值为第一项,cur初始值为第二项。计算值自动传给下一函数的prev,返回最后一次迭代产生的值 //此处的按行遍历函数求每行中的实部最大值 Complex map_row_fun(Complex prev,Complex cur,int row,int column,CMatrix& src) {     if(prev.real()>cur.real())         return prev;     return cur; } //定义一个按列遍历函数(固定格式),每一列得到一个值  //输入参数:前一个元素,当前元素,当前元素所属行,当前元素所属列,源矩阵 //迭代从第二项开始,prev初始值为第一项,cur初始值为第二项。计算值自动传给下一函数的prev,返回最后一次迭代产生的值 //此处的按列遍历函数求每列中的平均值 Complex map_column_fun(Complex prev,Complex cur,int row,int column,CMatrix& src) {     if(row==src.row-1)                     //如果遍历到最后一行数据        return (prev+cur)/(src.row*1.0);    //加上当前项,再取平均    return prev+cur;                        //前一项加上当前项,获得的和向后传递 }