将值从 C++ MEX 文件返回到 MATLAB

2024-05-26

我正在编写一个从 C++ 代码中检索数据的 MATLAB 程序。为此,我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction。 虽然可以在 MATLAB 中读取读取值,但我无法检索它来使用它。如果不清楚,我有与这里完全相同的问题(如何从 mex 函数返回浮点值,以及如何从 m 文件检索它? https://stackoverflow.com/questions/5943953/how-to-return-a-float-value-from-a-mex-function-and-how-to-retrieve-it-from-m-f)但我想检索我的 C++ 程序显示的值。 这是我的 C++ 代码:

#define _AFXDLL
#define  _tprintf mexPrintf
#include "StdAfx.h"
#include "704IO.h"
#include "Test704.h"
#include "mex.h"
#ifdef _DEBUG
  #define new DEBUG_NEW
#endif
/////////////////////////////////////////////////////////////////////////////

CWinApp theApp;  // The one and only application object

/////////////////////////////////////////////////////////////////////////////

using namespace std;

/////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
//void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
HMODULE hModule(::GetModuleHandle(NULL));
short   valueRead;

  if (hModule != NULL)
  {
    // Initialize MFC and print and error on failure
    if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
    {
      //mexPrintf("Fatal Error: MFC initialization failed");
      //nRetCode = 1;
    }
    else
    {
        valueRead = PortRead(1, 780, -1);
        mexPrintf("Value Read = %i\n",valueRead);
    }
  }
  else
  {
    _tprintf(_T("Fatal Error: GetModuleHandle failed\n"));
  }
  //return nRetCode;
}

/////////////////////////////////////////////////////////////////////////////
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    _tmain(0,0,0);
    return;
}

请告诉我您是否需要有关我的问题的更多信息?


要将整数返回到 Matlab,您可以按照您发布的链接的说明进行操作,但稍作修改即可返回整数。

void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{
    // Create a 1-by-1 real integer. 
    // Integer classes are mxINT32_CLASS, mxINT16_CLASS, mxINT8_CLASS
    // depending on what you want.
    plhs[0] = mxCreateNumericMatrix(1, 1, mxINT16_CLASS, mxREAL);


    // fill in plhs[0] to contain the same as whatever you want 
    // remember that you may want to change your variabel class here depending on your above flag to *short int* or something else.
    int* data = (int*) mxGetData(plhs[0]); 
    // This asigns data the same memory address as plhs[0]. the return value

    data[0]=_tmain(0,0,0); //or data[0]=anyFunctionThatReturnsInt();
    return;

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将值从 C++ MEX 文件返回到 MATLAB 的相关文章

随机推荐

  • 如何随机化(洗牌)JavaScript 数组?

    我有一个像这样的数组 var arr1 a b c d 我怎样才能随机 洗牌它 事实上的无偏洗牌算法是Fisher Yates 又名 Knuth 洗牌 https en wikipedia org wiki Fisher E2 80 93Y
  • HTMLUNIT getformbyname 网站中未指定表单名称

    我正在尝试使用 HTMLUNIT 单击网站上的按钮 我按照本教程进行操作http htmlunit sourceforge net gettingStarted html http htmlunit sourceforge net gett
  • Flutter:设置AppBar的高度

    我怎样才能简单地设置高度AppBar在颤振中 栏的标题应保持垂直居中 即AppBar 您可以使用首选尺寸 https api flutter dev flutter widgets PreferredSize class html clas
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 使用 API 密钥和机密保护 Spring Boot API

    我想保护 Spring Boot API 的安全 以便只有拥有有效 API 密钥和秘密的客户端才能访问它 但是 程序内部没有身份验证 使用用户名和密码的标准登录 因为所有数据都是匿名的 我想要实现的目标是所有 API 请求只能用于特定的第三
  • 如何在时间序列图中添加和定义多条线?

    我正在使用 python 的plotly 库创建一个基于线的时间序列图 我想将其连接到时间序列数据库 但目前我一直在使用 csv 数据进行测试 是否有可能有一个x and y轴 时间与值 并从另一个 csv 列值 主机 加载多行并附加到 x
  • AWS S3 JavaScript SDK - 网络错误:网络故障

    我正在尝试使用 AWS 在浏览器网页的示例中提供的示例 并且我不断收到NetworkingError Network Failure错误 这是我正在使用的
  • 使用 select 从套接字和标准输入读取

    我正在编写一个基于 ncurses 的聊天程序 起初 我只编写了网络内容 没有 ncurses 一切都工作正常 但添加图形后我无法让客户端应用程序正常工作 主要问题是同时从标准输入和套接字读取 在无 ncurses 的版本中 我使用了 pt
  • 可移植 C# 的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我希望为 linux windows mac 任何其他平台编写一些 C 代码 并且正在寻找可移植代码的最佳实践 Project mono htt
  • 带有中间页面的 Django 管理操作:未获取信息

    我正在尝试创建一个管理操作 将自定义时间增量添加到某个日期 时间增量将从中间页面的输入中读取 确认后 我将将该增量应用到之前选择的每个实例 使用此代码 我针对这个问题进行了简化 我无法获取输入的时间增量的值 我无法判断用户是否按下了 应用
  • Scala SBT 版本依赖性二进制兼容性错误 scala-xml

    我有一个在 GitHub 上托管的项目 我使用 scala steward 来保持我的插件和依赖项最新 这在一段时间内有效 但现在使用此类自动更新却变成了一场噩梦 事情是这样的 在我的plugins sbt中 我依赖于scoverage 它
  • 索引越界异常

    你好 这段代码将返回indexoutofboundsException我真的不知道为什么 我想从中删除这些对象pointlist它们与中的对象相同list public void listOfExternalPoints List
  • IN 子句中带有参数列表的PreparedStatement [重复]

    这个问题在这里已经有答案了 如何在执行查询时为 JDBC 中的 preparedStatement 中的 in 子句设置值 Example connection prepareStatement Select from test where
  • 动态创建的数据源未传递到 CakePHP 中的关联模型

    我有一个模型 汽车 该汽车有几个关联的模型 让我们考虑其中一个与hasMany关系 轮 在我的 CarsController 中 我使用以下代码动态生成数据源 schemaName this gt Session gt read User
  • 如何更改 JavaScript 对象的顺序?

    我的 JavaScript 对象如下所示 ivrItems 50b5e7bec90a6f4e19000001 name sdf key 555 onSelect fsdfsdfsdf 50b5e7c3c90a6f4e19000002 nam
  • TortoiseSVN:如何从提交中忽略 bin 内容

    我使用 TortoiseSVN 1 7 9 我怎么能够ignore remove内容来自 bin文件夹当我svn commit项目文件夹 我不想提交诸如 dll pdb etc I put dll pdb进入svn 忽略属性 但它不起作用
  • 在 PHP / MySQL 中处理未读帖子

    对于个人项目 我需要使用 PHP 和 MySQL 构建一个论坛 我不可能使用已经构建的论坛包 例如phpBB 我目前正在研究构建此类应用程序所需的逻辑 但这已经是漫长的一天了 我正在努力解决为用户处理未读帖子的概念 我的一个解决方案是有一个
  • 尝试在 Expression-Blend 4 中打开在 Visual Studio 2010 中创建的 WPF 项目时出现问题

    我在 VS 2010 中创建 WPF 项目 在完成功能性 GUI 的工作后 我想在 Blend 4 中编辑控件模板 但是当我在 Blend 中以 DesignMode 打开项目时 他告诉我 无效的 XAML 在结果窗口中他写道 Window
  • Java:避免在数组列表中插入重复项

    我是java新手 我有一个ArrayList我想避免插入时重复 我的ArrayList is ArrayList
  • 将值从 C++ MEX 文件返回到 MATLAB

    我正在编写一个从 C 代码中检索数据的 MATLAB 程序 为此 我在 MATLAB 中创建了一个 MEX 文件和一个网关 mexFunction 虽然可以在 MATLAB 中读取读取值 但我无法检索它来使用它 如果不清楚 我有与这里完全相