本代码是由「Microsoft Visual Studio 2015 Enterprise」编写。

想要了解更多 C++ 与 MATLAB 混合编程的知识,可以参考我的另一篇博客:C++ 与 MATLAB 混合编程总结

代码用到的头文件自己记得添加,包括 stringvector 等,这里只是主体代码。别忘了最主要的 engine.h

//打开MATLAB引擎
Engine *matlabEngine;    //定义MATLAB引擎指针
if (!(matlabEngine = engOpen(NULL)))    //测试是否启动Matlab引擎成功
{
    cout << "Can't start Matlab engine!" << endl;
    exit(1);
}

//读取文件中有效命令到"matlabCode",并发送到MATLAB
ifstream fin;
fin.open("voronoiData.m", ios_base::in);
string matlabCode;
string buf;
string zhuShi = "%";    //** 用于查找是否有注释
string::size_type index;

while (getline(fin, buf))
{
    if (buf.empty())    //跳过文件中的空行
    {
        fin.clear();
        buf.erase();    //遇到空行,输入流被阻断,需要重置,以便后续读取
    }
    else    //判断某行是否有注释,如果有,去掉注释内容
    {
        index = buf.find(zhuShi);    //查找该行是否有注释,依据MATLAB注释关键字"%"定位
        if (index == string::npos)
        {
            buf += ";";
            matlabCode += buf;
            buf.erase();
        }
        else
        {
            string temp(buf, 0, index);    //去掉注释内容
            buf.erase();
            temp += ";";
            matlabCode += temp;
        }
    }
}
engEvalString(matlabEngine, matlabCode.c_str());    //命令发送到MATLAB
fin.close();    //关闭文件

C++ 读取 MATLAB 的 .m 文件,并发送到 MATLAB 运行的更多相关文章

  1. 把一个文件中所有文件名或者文件路径读取到一个txt文件,然后在matlab中读取

    链接: http://blog.csdn.net/dreamgchuan/article/details/51113295 dir /on/b/s  这个读取的是这样的格式:

  2. MATLAB读取和保存nifti文件

    介绍 分析核磁数据时,数据的读取和保存是两个基本的操作.虽然大部分工具包都对这些功能进行了封装,但是如果你不了解如何使用这些工具包或者说当前的任务太简单不值得去使用这些庞大的工具包的时候就需要我们自己 ...

  3. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  4. Matlab的部分文件操作

    Author:Maddock Date:2015-01-20 判断文件是否存在 infilename = [str,'\lena.jpg']; sgc_exist = exist(infilename ...

  5. matlab 中txt文件(含字符及数值)处理

    matlab 中txt文件(含字符及数值)处理 (2008-08-02 09:45:12) 转载▼ 标签: 杂谈 分类: matlab及C学习 Matlab文件操作及读txt文件ZZ 2008-07- ...

  6. python读取并写入mat文件

    用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...

  7. linux系统使用sh文件传参数给matlab程序

      linux系统下使用sh文件传参数给matlab程序 (1)编写sh文件 程序以下面的行开始(必须在文件的第一行):   #!/bin/sh 定义需要传递的参数,用双引号引起,参数之间使用逗号或分 ...

  8. Android 读取手机联系人、拨号、发送短信及长按菜单的操作

    本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...

  9. Matlab获取一个文件夹下所有文件名

    Matlab获取一个文件夹下所有文件名: fileFolder=fullfile('D:\MATLAB\bin\trc'); dirOutput=dir(fullfile(fileFolder,'*. ...

随机推荐

  1. LeetCode 818. Race Car

    原题链接在这里:https://leetcode.com/problems/race-car/ 题目: Your car starts at position 0 and speed +1 on an ...

  2. HTML事件(onclick、onmouseover、onmouseout、this)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. .net web开发——文件的上传和下载

    以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  ...

  4. 中断点异常 STATUS_BREAKPOINT(0x80000003)

    简介 STATUS_BREAKPOINT,值为0x80000003,称为中断指令异常,表示在系统未附加内核调试器时遇到断点或断言. 触发条件 通常中断指令异常可以在以下条件下触发: 硬代码中断请求,如 ...

  5. Tomcat启动问题:严重[main] org.apache.catalina.core.AprLifecycleListener.init An incompatible version...

    今天观察tomcat启动日志,有一些以前没注意到的信息: 严重 [main] org.apache.catalina.core.AprLifecycleListener.init An incompa ...

  6. 【区间DP】加分二叉树

    https://www.luogu.org/problemnew/show/P1040#sub 题目描述 设一个n个节点的二叉树tree的中序遍历为(1,2,3,…,n),其中数字1,2,3,…,n为 ...

  7. 数据结构---公交线路提示系统05(内附读取表格+迪杰斯特拉算法Java代码)

    今天做的最多的事情就是纠错了,通过添加输出语句判断错误来源: 找到错误来源: wb = new XSSFWorkbook(input);//语句创建错误 网上查询发现是jar包的问题: 下图为poi的 ...

  8. java内存dump文件导出与查看

    生成dump文件的命令:jmap -dump:format=b,file=20170307.dump 16048file后面的是自定义的文件名,最后的数字是进程的pid 使用jvisualvm来分析d ...

  9. Windows下多个JDK版本的切换方法

    问题 因我之前在window中无法命令行输入,后来发现是电脑中存在多个JDK,导致设置混乱. 于是,我继续深入研究了当电脑存在多个JDK的情况下,如何设置想要的JDK版本. 步骤 1.更改环境变量 进 ...

  10. Alpha总体规划 & 任务分解

    目录 Alpha阶段项目目标 任务拆解和优先级 总体规划 Alpha-1任务分配 Alpha-2任务分配 Alpha阶段项目目标 初步实现北航社团小程序: 北航社团小程序基础功能(优先级中的高两级,即 ...