【问题标题】:Matlab Coder Convert variable-size cell errorMatlab Coder 转换可变大小单元格错误
【发布时间】:2018-02-12 14:21:23
【问题描述】:

我使用 Matlab coder 将 .m 文件转换为 .cpp 文件。

但是构建错误告诉我:

可变大小元胞数组不支持通过以下方式生成代码 细胞功能。

我已经在以下站点引用了该方法: https://www.mathworks.com/help/simulink/ug/cell-array-restrictions-for-code-generation.html#bvczero

但它不起作用。

这是我的代码:

--------------------------------------------------
dets = mycell(n, 1);
...
%-------------------------------- 
function z = mycell(n,m)
%--------------------------------
%#codegen
assert(n < 100);
assert(m < 100);
x = cell(n,m);   
for i = 1:n
    for j = 1:m 
        x{i,j} = i+j;
    end
end
z = x{m,n};

这段代码有问题吗?

【问题讨论】:

  • 请将代码格式化为代码。
  • 会不会是因为你没有在end 关键字后面加上z = x{m,n}; 结束函数?
  • 你试过coder.nullcopy吗? mathworks.com/help/simulink/ug/…
  • 另外,您使用的是最新版本的 MATLAB 吗?如果不是,您正在阅读的文档与您的软件不匹配...
  • 我正在使用 Matlab 2017a,您帖子中提到的代码对我来说很好。因此,即使此代码也不适合您,建议升级到较新版本。 @JasonZheng​​span>

标签: c++ matlab


【解决方案1】:

我创建了一个新文件来放置 mycell 函数,但不是作为子函数。

我在网站上发现了一个错误: https://www.mathworks.com/help/simulink/ug/cell-array-restrictions-for-code-generation.html#bvczero

我们应该更改代码 z = x{m,n}; 进入 z = x;

最后编码器工作了。

非常感谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多