- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在尝试通过 Matlab legacy_code 工具在 Matlab/Simulink 中使用基于 C/C++ 代码的库。我对此很陌生,请耐心等待。
我偶然发现了这个问题,我得到了返回数组的类成员。
我现在所做的是遵循 Matlab 遗留代码示例,尤其是这个示例:
Integrate External C++ Object Methods
据我所知,legacy_code 工具需要一个包装函数来包装方法调用,所以基本上我可以在这个包装函数内以任何必要的方式操纵被调用方法的返回值。到目前为止没问题。
但是,我不确定如何从调用的方法接收信息数组,然后将此数组传递给 Matlab/Simulink。
例如方法的返回值是一个指向信息数组的指针,假设我们知道其中包含的有效信息的长度。
/* Simple example */
uint8_t* BUS::answerRcvd()
{
static int r[10];
int i;
srand( (unsigned)time( NULL ) );
for ( i = 0; i < 10; ++i)
{
r[i] = rand();
}
return r;
}
有没有办法为这种方法创建一个包装函数来接收一组信息并将其传递给 matlab?
是否有可能处理该数组,例如uint8_t 的单个值(如果方法与给定示例保持一致)并像在普通 matlab 函数中一样传递这些值?
[a,b,c] = function()
我愿意接受任何建议,在此先感谢您。
最佳答案
好的,看来我找到了解决问题的方法。
作为包装函数,可以使用以下模式
void myfunc(double u1, double u2, double u3, double *y1, double *y2)
{
*y1=u1;
*y2=(u2+u3)/2;
}
此包装函数然后由遗留代码工具 (LCT) 进行接口(interface),如下所示:
def = legacy_code('initialize')
def.OutputFcnSpec = 'void myfunc(double u1, double u2, double u3, double y1[1], double y2[1])'
就这么简单。在 C/C++ 代码中使用指针命名法/语法,在 Matlab 中使用数组命名法/语法。
我希望这能帮助像我这样的人,他们需要一个解决方案来与遗留代码交互,遗留代码不仅应该接受多个输入,还应该接受多个输出。
事后看来,选项 tuuse pointers 非常明显,但如果您不知道如何教您的 LCT 如何与之交互,它很容易成为一项累人的任务。
关于c++ - Matlab legacy_code 工具 - 编写包装函数来捕获数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027587/
目前我正在尝试通过 Matlab legacy_code 工具在 Matlab/Simulink 中使用基于 C/C++ 代码的库。我对此很陌生,请耐心等待。 我偶然发现了这个问题,我得到了返回数组的
我是一名优秀的程序员,十分优秀!