这样的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;
我只是想知道如何定义标量结构参数。让我们假设上面的论证应该是这样的(即由2个字段组成 - 一个字符和一个字符串):
u.FirstName = 'Loren';
u.Height = 150
PS:
刚刚找到这样的东西:
s = struct('a',42,'b',4711);
codegen topfun.m -args { s }
这会是一个解决方案吗?我相信,这是一个例子的定义。
答案 0 :(得分:1)
这似乎对我有用:
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中断言它。希望这是有意义的。
答案 1 :(得分:0)
可以使用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