配置C++环境,读取mat文件
PC端需安装matlab(我的环境matlab R2018b, visual studio 2022)
- 属性->配置属性->C/C+±>常规->附加包含目录:
D:\MATLAB\extern\include - 属性->配置属性->链接器->常规->附加库目录:
D:\MATLAB\extern\lib\win64\microsoft - 属性->配置属性->链接器->输入->附加依赖库:
libmat.lib
libmx.lib
libmex.lib
libeng.lib - 测试demo
#include <vector>
#include <mat.h>
int main()
{
string path = "D:\\data\\";
MATFile* pmatFile = NULL;
int M,N;
double* initA;
vector<vector<double>> warmData(8, vector<double>(4000, 0));
for (int index = 0; index < 10; ++index)
{
// 读取离线数据
string path1 = path + to_string(index + 1) + "-warmData.mat";
pmatFile = matOpen(path1.c_str(), "r");
if (pmatFile == NULL) {
printf("Error reopening file %s\n");
}
mxArray* pMxArray = matGetVariable(pmatFile, "warmData");
initA = (double*)mxGetData(pMxArray);
M = mxGetM(pMxArray);
N = mxGetN(pMxArray);
// 获取元素
for (int i = 0; i < M; ++i)
{
for (int j = 0; j < N; ++j)
{
warmData[i][j] = initA[M * j + i];
}
}
mxDestroyArray(pMxArray);//释放内存
initA = NULL;
matClose(pmatFile);
}
return 0;
}
配置C#环境,读取mat文件
打开工具->NuGet包管理器->程序管理器控制台
- 安装库函数MathNet.Numerics.Data.Matlab,控制台输入
NuGet\Install-Package MathNet.Numerics.Data.Matlab -Version 5.0.0 - 安装库函数MathNet.Numerics,控制台输入
NuGet\Install-Package MathNet.Numerics -Version 5.0.0
库函数安装包路径 - 测试demo
using MathNet.Numerics.Data.Matlab;
using MathNet.Numerics.LinearAlgebra;
namespace DWTNamespace
{
class test
{
static void Main(string[] args)
{
for (int index = 1; index < 41; index++)
{
// 加载数据
string[] paths = { @"D:\\data", index.ToString() + "-warmData.mat" };
string fullPath = System.IO.Path.Combine(paths);
Matrix<double> m = MatlabReader.Read<double>(fullPath);
double[,] warmData = m.ToArray();
}
}
}
}