jjzjj

c++ - Matlab/C++ : segmentation fault on parallel computing with C++ Mex persistent objects (cannot convert handle)

本帖引用:[1]http://www.mathworks.com/matlabcentral/newsreader/view_thread/278243“使C++对象在mex调用之间持久化,并且健壮。”[2]MATLABparforandC++classmexwrappers(copyconstructorrequired?)“MATLABparfor和C++类mex包装器(需要复制构造函数?)”我成功地实现了一个Matlab/C++接口(interface),基于[1]上提出的方法。无论如何,我在尝试将系统与Matlab并行计算一起使用时遇到了麻烦。在MEX接口(interface)

c++ - 如何在 C++ mex 函数中传递 Matlab m x n 单元格矩阵参数?

我想将在Matlab中创建的这样一个单元格矩阵作为输入参数传递给mex函数,fori=1:5,p{i}=rand(3,4);end然后将其作为3维double组作为输出参数返回。预期语法:Parray=convert(p);其中Parray是一个3×4×5数值数组并且P(:,:,i)=p{i};我正在使用的以下代码可以成功地构建到所需的mex函数中:#include#include#include#include#include#include#include#include"mex.h"usingnamespacestd;voidmexFunction(intnlhs,mxArray

c++ - 在不复制数据的情况下将 OpenCV Mat 发送到 MATLAB 工作区的方法?

当我编写使用OpenCV函数的MEX文件时,很容易将数据从MATLAB传递到MEX环境,而无需复制数据。有没有办法以相同的方式将数据返回MATLAB?(也就是说,没有复制数据,也没有导致MATLAB崩溃...)一个简单的例子:#include"mex.h"#include"/opencv2/core.hpp"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){Rows=mxGetM(prhs[0]);Cols=mxGetN(prhs[0]);MatInMat(Cols,Rows,CV_64FC1,mxG

c++ - 如何释放 mxGetData() 分配的内存

我正在将一个mat文件导入到我的C++代码中。导入数据、计算并保存到另一个地方后,我想释放原始数据占用的内存。是否有任何特定功能可以执行此操作。只删除mxGetData()返回的指针会释放内存吗?这是我创建的用于导入mat文件的类#ifndefREADMAT_H#defineREADMAT_H#include"mat.h"#include"matrix.h"#include"mex.h"#include"program_exception.h"#include"stdint.h"classreadmat{private:constsize_t*dimarray;constchar**d

c++ - C++ MEX 和 C MEX 之间的区别

我用C++编写了带有服务器和客户端的TCPIP套接字连接,它在VisualStudio中工作得很好。现在我想通过MEX文件在MATLAB/Simulink中使用C++-客户端,然后在S-Function中使用。我找到了两个关于MEX文件的描述。C++MEXFileApplication仅适用于C++C/C++MEXFilesC/C++现在我很困惑,该拿哪个。我用第二个写了一些简单的程序,但总是遇到数据类型的问题。我认为,这是因为给定的示例和函数仅适用于C,而不适用于C++。感谢您的帮助!非常感谢! 最佳答案 区别:描述的C接口(in

c++ - 在 Matlab 中调用 c++ 例程

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion我有一段很长的C++代码,我想从MATLAB中调用它。我读到,使用MEX文件,从MATLAB调用大量预先存在的C/C++和Fortran例程,而无需重写它们,因为MATLAB函数是可能的。但是,MEX文件很麻烦,显然应该更改整个代码。此外,我在从MATLAB的命令行调用C/C++编译器时遇到问题。特别是,MATLAB要求Selectacompiler:[1]Lcc-win32C2.4.1inD:\

c++ - 在 mex 下编译 vtk 示例时找不到 GLIBCXX

我一直在努力关注thisexample在Ubuntu11.10上使用mex在MATLAB中编译vtk。我使用的mex命令如下:mex-I/usr/include/vtk-5.6vtk_file.cpp-L/usr/lib/-lvtkFiltering-lvtkRendering-lvtkCommon编译后我有一个.mexa64文件。但是,当我尝试运行该文件时,我遇到了以下错误:InvalidMEX-file'/home/bill/Documents/MATLAB/vtk/vtk_file.mexa64':/usr/local/MATLAB/R2011b/bin/glnxa64/../.

c++ - 是否可以将 mex 代码转换为 C++ 代码?

我已经编写了一些mex(c++)代码,我使用了mxArrays和其他一些Matlab函数,我想知道是否可以通过包含适当的头文件并进行一些小的更改来轻松地将它转换为C++代码?编辑:通过“转换”,我的意思是我想在不依赖(使用)matlab的情况下编译和运行我的代码。 最佳答案 正如上面评论中提到的,使这项工作在很大程度上取决于您使用的MATLAB函数的性质。由于您已成功将大部分MATLAB代码移植到C++,我建议您继续这样做,直到您不再依赖MATLAB库来构建。您是否依赖任何工具箱功能?如果是这样,这可能是一项比您意识到的更大的任务。

c++ - 使用来自matlab的boost::threads时挂起和/或segfault,而不是直接调用时

问题出在人们有类似问题的情况下:经过与Mathworks支持的一些讨论之后,原来是系统boost和Matlab附带的boost库之间的冲突:当我使用systemboostheader进行编译并与(较旧)的MatlabBoost库,它已分段。当我编译并与系统boost动态链接时,然后它动态加载Matlabboost库时,它将永远挂起。静态链接到系统boost的工作原理,以及为Matlab随附的boost版本下载正确的header并进行编译时也是如此。当然,Mac版本的Matlab的文件名中没有版本号,尽管Linux和据说的Windows版本都有。R2011b使用boost1.44作为引用

c++ - 将 C++11 代码编译为 MATLAB mex 文件的一部分

我有一段用C++11编写的代码,我想将其编译为GNU/Linux的MATLABMEX文件的一部分。问题是Linux上的MATLAB仅支持GCC4.3(及更早版本),不支持编译我的C++11代码所需的GCC4.7。是否可以解决该问题?是否可以通过使用GCC4.7编译一些目标文件并使用GCC4.3将它们链接到MEX文件来解决这个问题?提前致谢! 最佳答案 如果您可以在4.3扩展中编写任何代码并编译它,那么只需编写代码来dlopen一个您在4.7中编写和编译的共享对象。使用4.7.so完成所有c++11工作,并通过C接口(interfac