jav*_*Man 2 c matlab structure
假设C程序的结构实例化如下:
b.param1 = 20;
b.parm2 = 42;
b.param3 = 30;
Run Code Online (Sandbox Code Playgroud)
问题是,我们需要做什么或必须能够从Matlab编写
>> b = [bInC.param1; bInC.param2; bInC.param3];
Run Code Online (Sandbox Code Playgroud)
其中bInC指向上述C程序分配的内存
小智 7
根据您的具体情况,您有几种选择.
1)如果您的C代码的结构可以从matlab调用,您可以将C代码编译为mex文件.然后,您将从matlab调用C函数并返回结果.要返回结构,必须在C代码中创建一个matlab数组,并将结构参数复制到其中.这个接口是mxArray.它不是最方便的过程,但效果很好.
mex文件和mxArray:http://www.mathworks.com/help/techdoc/matlab_external/f29502.html
2)使用matlab引擎将值加载到matlab中,而无需将代码编译为mex.该引擎将允许您从C程序执行matlab命令.您还可以将变量加载到工作区中.您仍然需要创建一个包含要复制的值的mxArray.然后,您可以使用engPutVariable函数将mxArray复制到matlab工作区.
请注意,引擎维护自己的工作空间,默认情况下它不会自动将变量复制到当前matlab会话的工作空间中.有些命令可以在工作空间之间移动变量,但我没有对此进行调查.我发现将变量保存到mat文件并将其加载到主工作区更快,但如果您需要自动化方法,这并不理想.
matlab引擎:http://www.mathworks.com/help/techdoc/matlab_external/f29148.html
| 归档时间: |
|
| 查看次数: |
3144 次 |
| 最近记录: |