3

像这样的代码生成命令:

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 应该如下所示(即由 2 个字段组成 - 一个 char 和一个 double):

u.FirstName = 'Loren';
u.Height = 150

PS:

刚刚发现是这样的:

s = struct('a',42,'b',4711);
codegen topfun.m -args { s }

这会是一个解决方案吗?我相信,这是一个例子的定义。

4

2 回答 2

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 中断言它。希望这是有道理的。

于 2012-11-29T08:48:50.710 回答
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 
于 2016-09-23T07:23:07.757 回答