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; //前一项加上当前项,获得的和向后传递 }
阅读全文
2 0
- matlab2c基础使用教程(实矩阵、复矩阵)
- 矩阵基础(二)
- 矩阵基础(三)
- 矩阵基础(四)
- 矩阵基础(一)
- 矩阵基础(二)
- 矩阵基础
- 矩阵基础
- 基础矩阵
- 单应性矩阵,本征矩阵,基础矩阵
- 矩阵乘法(简单基础)
- MathJax基础(2):矩阵
- 基础矩阵与本质矩阵
- 本质矩阵和基础矩阵
- c++实现Matlab矩阵Matrix类(实矩阵Matrix、复矩阵CMatrix)
- [Matlab]基础教程学习笔记(一):基础和设置和矩阵教程
- Unity 渲染教程(一):矩阵
- Matlab简单教程:矩阵
- redis中conf文件中的配置
- netty(十一)源码分析之ByteBuf 三
- 【树链剖分模板】题
- 【分页查询】Page如何做到分页查询
- linux查找文件以及文件夹命令
- matlab2c基础使用教程(实矩阵、复矩阵)
- 深度优先搜索练习之神奇的矩环
- ccf csp 有趣的数 动态规划
- RecyclerView多条源数据却只显示一条
- Kaggle入侵物种检测VGG16示例——基于Keras
- iOS常见问题归纳与解答
- Android 自定义View之仿华为圆形加载进度条
- Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
- [面试题] 用最快的方法找到唯一一个不连续成对出现的字母