以下是针对matlab依赖项的操作
1.选中VC++目录,添加包含目录为: C:\Program Files\MATLAB\R2010b\extern\include
2.选中VC++目录,添加库目录为: C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft
3.选中链接器菜单下的输入选项,添加附加依赖项:
libeng.lib libmx.lib libmat.lib libmex.lib
这四个库文件对应着我们使用的四类函数:MATLAB引擎相关函数、mxArray相关函数、mat文件相关函数、mex相关函数,对应的头文件为:engine.h、matrix.h、mat.h、mex.h
4.需要增加windows系统的path环境变量:C:\Program Files\MATLAB\R2010b\bin\win32
设置之后,重启电脑,并在DOS命令框里输入ECHO %PATH%查看是否设置成功。
#include <Eigen/Dense>
#include <iostream>
#include "mat.h"
using namespace std;
int main()
{
Eigen::MatrixXcd randvalue2 = Eigen::MatrixXcd::Random(4, 5);
std::cout << randvalue2 << std::endl;
cout << endl;
cout << randvalue2.real() << endl;//可以分别输出实数实部和虚部,读取时分两步读取文件
MATFile *pmat;//创建mat文件指针
mxArray *pa1;//创建数组
const char *file = "mattest2.mat";
pmat = matOpen(file, "w");
if (pmat == NULL) {
cout << "Error reopening file" << endl;
}
pa1 = mxCreateDoubleMatrix(4, 5, mxCOMPLEX);
if (pa1 == NULL) {
cout << "Unable to create mxArray." << endl;
}
double *xr, *xi;
size_t nx, ny;
nx = mxGetM(pa1);//获得行数
ny = mxGetN(pa1);//获得列数
xr = mxGetPr(pa1);//实部
xi = mxGetPi(pa1);//虚部
//列优先
for (int i = 0; i < nx;i++)
{
for (int j = 0; j < ny;j++)
{
xr[i + j*nx] = randvalue2(i, j).real();
xi[i + j*nx] = randvalue2(i, j).imag();
}
}
int status;
status = matPutVariable(pmat, "LocalDouble", pa1);//将mxArray 放入mat文件中
if (status != 0) {
cout << "Error using matPutVariable on line" << endl;
}
mxDestroyArray(pa1);//清除变量
if (matClose(pmat) != 0) { //关闭文件
cout << "Error closing file" << endl;
}
system("pause");
}