微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MATLAB Coder可以生成将指针作为输入的函数吗?

如何解决MATLAB Coder可以生成将指针作为输入的函数吗?

我想使用MATLAB Coder生成可执行文件(或目标文件中的函数),该可执行文件接受指向数组的指针作为输入。

我使用libpointer创建了一个指针对象,然后尝试使用以下codegen命令进行编译:

codegen -config:lib foo -args {coder.typeof(pointer_object_name)}

结果错误消息报告coder.typeof不支持lipointer类型。

我的最终目标是创建可以从另一个C函数调用的东西,而看不到MATLAB,并接收指向数组的指针作为输入。 MATLAB Coder可以生成类似的东西吗?


@ ryan-livingston要求提供我希望MATLAB Coder生成函数的签名。

假设samples是指向浮点数数组的指针。我想我想让MATLAB Coder创建一个void foo(float *samples)来对这些浮点数进行各种计算,并可能将结果写入文件套接字。

现在,我引起了@ ryan-livingston的注意,我想我应该问以下问题。

  • 编码器能否使resample之类的函数与指针一起使用?
  • 引擎盖下是否已经使用了指针,让我不必担心?

解决方法

如果仅使用固定大小的数组输入生成代码,则生成的代码将能够接受指针。例如:

function x = foo(x)
x = 2*x;
% You can use MATLAB fopen,fprintf,fwrite here to write x to a file

>> codegen foo -args zeros(10,20) -config:lib -report

产生界面:

void foo(double x[200]);

与:

相同
void foo(double *x);

由于数组在C中的调用会导致指针衰减。

请注意,我已经使用x = foo(x) syntax来使Coder通过引用x来传递foo。当在调用站点上也使用与输入和输出相同的变量来调用时,用与输入和输出相同的变量声明的函数通常会产生按引用传递。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。