Codegen命令如下所示:
codegen -config:dll ep1 -args single(0) ep2 -args {0,0}对于下面这样的函数来说很容易:
function y = ep1(u) %#codegen
y = u;
function y = ep2(u, v) %#codegen
y = u + v;我只是想知道如何定义标量结构参数。让我们假设上面的参数u应该看起来像这样(即由两个字段组成-一个字符和一个双精度):
u.FirstName = 'Loren';
u.Height = 150PS:
我找到了类似这样的东西:
s = struct('a',42,'b',4711);
codegen topfun.m -args { s }这会是一个解决方案吗?我相信,这是一个例子的定义。
发布于 2012-11-29 16:48:51
这似乎对我很有效:
codegen -report -config:dll ep1 ...
ep2实际的“函数签名”(以及标量结构)可以在函数中定义如下:
function [bla] = ep1(parameters)
%#codegen
assert(isstruct(parameters));
assert(isa(parameters.x1,'char'));
assert(size(parameters.x1, 1) >= 1);
assert(size(parameters.x1, 1) <= 1024);
assert(isa(parameters.x2,'double'));
...我的问题是,我似乎必须在父函数中定义所有参数-尽管我没有在父函数中使用参数。
看看上面的东西。假设ep1是ep2的父函数,而ep1没有使用parameters.x2,我仍然需要在ep1中声明它。希望这是有意义的。
发布于 2016-09-23 15:23:08
可以使用coder.typeof函数捕获结构的定义。
首先使用脚本初始化结构,使用coder.typeof捕获结构定义,然后使用-args传递定义,如下所示:
u = Initialise(u);
p = InitialiseParameters();
tx = coder.typeof(u);
tp = coder.typeof(p);
codegen topfun.m -args {tx, tp} -config:dll https://stackoverflow.com/questions/13606645
复制相似问题