使用C/C++读取matlab中.mat格式数据的操作

 更新时间:2023年12月22日 09:49:26   作者:_妈耶_  
这篇文章给大家介绍了使用C/C++读取matlab中.mat格式数据的操作,文中通过图文结合的方式介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

以window11+VS2022+MATLAB2023a为例

1、添加matlab环境变量

添加以下几个参数,具体目录根据自己电脑matlab安装路径为准

D:\MATLAB\MATLAB.R2023a\MATLAB\bin

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\lib\win64\microsoft

D:\MATLAB\MATLAB.R2023a\MATLAB\bin\win64

2、配置VS参数

2.1 VC++目录配置

包含目录配置如下

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\include

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\include\win64

库目录配置如下:

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\lib\win64\microsoft

2.2 C/C++配置

附加包含目录配置如下:

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\include

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\include

2.3连接器配置

连接器—>常规配置如下:

D:\MATLAB\MATLAB.R2023a\MATLAB\extern\lib\win64\microsoft

连接器—>输入配置如下:

libmat.lib

libmx.lib

libmex.lib

libeng.lib

3、编写程序

前面两步骤完成,添加头文件才不会报错;

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>

#include <mat.h>//头文件

using namespace std;


int main()
{
    MATFile* pmatFile = NULL;
    mxArray* pMxArray = NULL;

    // 读取.mat文件(例:mat文件名为"initUrban.mat",其中包含"initA")
    double* initA;

    pmatFile = matOpen("a.mat", "r");//打开一个a.mat的文件,返回值是一个地址;
    pMxArray = matGetVariable(pmatFile, "a");//
    initA = (double*)mxGetData(pMxArray);


    int M = mxGetM(pMxArray);
    int N = mxGetN(pMxArray);
    double A[16][1000];
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            A[i][j] = initA[M * j + i];
        }
    }
    cout << M * N << " " << M << " " << N << endl;
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << A[i][j] << " ";
        }
        cout << endl;
    }
    matClose(pmatFile);
    mxFree(initA);
    system("pause");
}

以上就是使用C/C++读取matlab中.mat格式数据的操作的详细内容,更多关于C/C++读取.mat格式数据的资料请关注脚本之家其它相关文章!

相关文章

  • C语言 超详细顺序表的模拟实现实例建议收藏

    C语言 超详细顺序表的模拟实现实例建议收藏

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03
  • 输出1000以内的素数的算法(实例代码)

    输出1000以内的素数的算法(实例代码)

    本篇文章是对输出1000以内的素数的算法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++预定义的流对象基本示例详解

    C++预定义的流对象基本示例详解

    这篇文章主要为大家介绍了C++预定义的流对象基本示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • C语言实现的双链表功能完整示例

    C语言实现的双链表功能完整示例

    这篇文章主要介绍了C语言实现的双链表功能,结合完整实例形式分析了基于C语言实现的双链表定义、添加、删除、排序等相关操作实现技巧,需要的朋友可以参考下
    2018-04-04
  • 用C语言模仿Python函数的一种简单实现方法

    用C语言模仿Python函数的一种简单实现方法

    这篇文章主要介绍了用C语言模仿Python函数的一种简单实现方法,需要的朋友可以参考下
    2017-05-05
  • 关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题

    关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题

    这篇文章主要介绍了关于c++编译protobuf时提示LNK2001 无法解析的外部符号的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • C++ 数据结构超详细讲解顺序表

    C++ 数据结构超详细讲解顺序表

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03
  • C语言分治法实现归并排序

    C语言分治法实现归并排序

    这篇文章主要为大家详细介绍了C语言实现归并排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • C语言动态内存规划详解

    C语言动态内存规划详解

    这篇文章主要介绍了C语言动态内存的规划,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • C语言实现颠倒栈的方法

    C语言实现颠倒栈的方法

    这篇文章主要介绍了C语言实现颠倒栈的方法,是针对数据结构中栈的常见操作技巧,需要的朋友可以参考下
    2014-09-09

最新评论