c - MATLAB 到 C 代码

标签 c matlab cell-array codegen

我正在按照 MathWorks 指南将 MATLAB 代码转换为 C 代码。 第一步进入

%#codegen

在我想要转换为 C 代码的每个函数之后,但是这样做会在下面的代码中给出以下提示。

function lanes=find_lanes(B,h, stats)
% Find the regions that look like lanes
%#codegen

lanes = {};
l=0;
    for k = 1:length(B)
    metric = stats(k).MajorAxisLength/stats(k).MinorAxisLength;
    %testlane(k);
    %end
    %function testlane(k)
        coder.inline('never');
        if metric > 5 & all(B{k}(:,1)>100)
            l=l+1;
            lanes(l,:)=B(k);
        else
            delete(h(k))
        end
    end
end

花括号周围:

code generation only supports cell operations for "varargin" and "varargout"

另一个提示说

Code generation does not support variable "lanes" size growth through indexing

第二次提到车道

函数的输入参数是:

B - 是bwboundaries 图像处理工具箱函数输出。它是一个 P×1 元胞数组,其中 P 是对象和孔的数量。元胞数组中的每个元胞都包含一个 Q×2 矩阵。矩阵中的每一行都包含边界像素的行坐标和列坐标。 Q为对应区域的边界像素数。

h - 用绿色轮廓绘制对象的边界,同时是大小为 1 X 长度 (B) 的矩阵,保持边界的值,如下所示:

h(K)=plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 2);//boundary(:,1) - Y coordinate, boundary(:,2) - X coordinate.

stats - 19x1 struct array 使用图像处理工具箱中的 regionprops 函数获取的字段: MajorAxisLength 和 MinorAxisLength(对象的)

如果您能提供帮助我清除此错误的任何意见,我将不胜感激。提前致谢!

最佳答案

关于代码生成的几点说明 -

  1. MATLAB 和图像处理工具箱中只有一部分函数支持代码生成 - Image Processing Toolbox support for code generation .

  2. 元胞数组尚不支持代码生成 - Cell array support .

  3. 在您的代码中,您的变量似乎在增长,即数组的初始大小无法支持您的工作流程。你应该关注code generation for variable sized inputs .

关于c - MATLAB 到 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478377/

相关文章:

matlab - 如何将矩阵划分为大小不等的子矩阵?

arrays - MATLAB:如何拆分不同分隔符数字的元胞数组?

c - 如何读取两个字节位置之间的文件行

c - 如何阻止文件名/路径出现在已编译的 C 二进制文件中

python - 从向量中动态追加和删除元素

matlab - 如何隐藏y轴?

matlab - 如何使用矢量化代码有效地获取 3D 矩阵或元胞数组?

c - OpenCV:从 harpia 导出源代码后: "too few arguments to function ‘cvHaarDetectObjects’“

c - 对 2D 字符数组执行选择排序

windows - 访问图像的 Windows 'tags' 元数据字段