gpt4 book ai didi

c - 我们如何将结构从 C 代码传递到 Matlab 代码

转载 作者:行者123 更新时间:2023-12-02 07:10:18 24 4
gpt4 key购买 nike

假设一个C程序有一个实例化如下的结构:

b.param1 = 20;
b.parm2 = 42;
b.param3 = 30;

问题是,我们需要做什么或者必须能够从 Matlab 中编写

>> b = [bInC.param1; bInC.param2; bInC.param3];

其中bInC指向上述C程序分配的内存

最佳答案

根据您的情况,您有多种选择。

1) 如果您的 C 代码的结构可以从 matlab 调用,您可以将 C 代码编译为 mex 文件。然后您将从 matlab 调用您的 C 函数并返回您的结果。要返回您的结构,您必须在 C 代码中创建一个 matlab 数组并将结构参数复制到其中。这个接口(interface)是 mxArray。这不是最方便的过程,但效果很好。

mex 文件和 mxArray:http://www.mathworks.com/help/techdoc/matlab_external/f29502.html

2) 使用 matlab 引擎将您的值加载到 matlab 中,而无需将您的代码编译成 mex。该引擎将允许您从 C 程序执行 matlab 命令。您还可以将变量加载到工作区中。您仍然必须创建一个包含要复制的值的 mxArray。然后,您可以使用 engPutVariable 函数将 mxArray 复制到您的 matlab 工作区中。

请注意,引擎维护自己的工作空间,默认情况下它不会自动将变量复制到当前 matlab session 的工作空间中。有在工作区之间移动变量的命令,但我没有对此进行调查。我发现将变量保存到 mat 文件并将其加载到主工作区会更快,但如果您需要自动化方法,这并不理想。

matlab 引擎:http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

关于c - 我们如何将结构从 C 代码传递到 Matlab 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6817306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com