MATLAB到C代码

use*_*048 4 c matlab cell-array codegen

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

%#代码生成

在我想要转换为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
Run Code Online (Sandbox Code Playgroud)

在花括号周围:

代码生成仅支持"varargin"和"varargout"的单元操作

另一个提示说

代码生成不支持通过索引进行变量"通道"大小增长

其中泳道提到第二次.

该函数的输入参数是:

-是对输出的的bwboundaries图像处理工具箱功能.它是一个P-by-1单元阵列,其中P是对象和孔的数量.单元阵列中的每个单元包含Q-by-2矩阵.矩阵中的每一行包含边界像素的行和列坐标.Q是相应区域的边界像素数.

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

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

stats - 使用图像处理工具箱中的regionprops函数获取的19x1结构数组,其中包含字段:MajorAxisLength和MinorAxisLength(对象的)

我非常感谢你能帮助我清除这个错误的任何输入.提前致谢!

Lok*_* R. 5

关于代码生成的几点 -

  1. MATLAB和图像处理工具箱中只有一部分函数支持代码生成 - 图像处理工具箱支持代码生成.

  2. 单元阵列还不支持代码生成 - 单元阵列支持.

  3. 在您的代码中,您的变量似乎正在增长,即阵列的初始大小无法支持您的工作流程.您应该遵循可变大小输入的代码生成.