//#include"stdlib.h"
//#include"stdafx.h"
#include<iostream>
#include"matlab.hpp"
//#pragma comment (lib, "libmatlb.lib")
//#pragma comment (lib, "libmx.lib")
//#pragma comment (lib, "libmatpm.lib") // c++ maths library
static double data[]={1,2,3,4,5,6};
void main()
{
//先列后行方式创建
mwArray mat0(2,3,data);//创建矩阵
mwArray mat1(3,2,data);
cout<<"先列后行方式创建"<<endl;
cout<<"mat0:"<<mat0<<endl;//矩阵输出
cout<<"mat1"<<mat1<<endl;
//先行后列方式创建
mwArray mat2;
mat2=row2mat(2, 3, data);
mwArray mat3;
mat3=row2mat(3, 2, data);
cout<<"先行后列方式创建"<<endl;
cout<<"mat2:"<<mat2<<endl;//矩阵输出
cout<<"mat3:"<<mat3<<endl;
int ndims[2];
mat0.Size(ndims);//获取矩阵的维数
cout<<"mat0的维数:"<<endl;
cout<<"行:"<<ndims[0]<<"列:"<<ndims[1]<<endl;
mwArray mat0_t;
mat0_t=transpose(mat0);//矩阵转置
cout<<"mat0_t:"<<mat0_t<<endl;
mwArray mat,mat_inv;//矩阵求逆
double data0[]={4,6,15.5,0.5,4,0.98,10,3,2.1};
mat=row2mat(3,3,data0);
mat_inv=inv(mat);
cout<<"mat:"<<mat<<endl;
cout<<"mat_inv:"<<mat_inv<<endl;
mwArray mat_sum;
mat_sum=mat0+mat2;//矩阵求和
cout<<"mat0+mat2:"<<mat_sum<<endl;
mwArray mat_mtply;
mat_mtply=mat0*mat1;//矩阵相乘
cout<<"mat0*mat1:"<<mat_mtply<<endl;
double getData2_1;//获取矩阵里的数据,注意下标是从1开始
getData2_1=mat_mtply(2,1).Double();
cout<<"getData2_1:"<<getData2_1<<endl;
double *pmat;
pmat=mxGetPr(mat_mtply.GetData());
for(int k=0; k<mat_mtply.EltCount();k++)
{
cout<<"mat("<<k+1<<")="<<*pmat<< endl;// 注意下标从1开始
pmat++;//按列访问
}
cout<<"Please enter a matrix:"<<endl;//输入矩阵,并将输入的矩阵输出
cin>>mat1;
cout<<mat1<<endl;
}