繁体   English   中英

MATLAB 到 C 代码

[英]MATLAB to C-code

我正在按照 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

花括号周围:

代码生成仅支持“varargin”和“varargout”的单元格操作

另一个提示说

代码生成不支持通过索引可变的“通道”大小增长

第二次提到车道的地方。

该函数的输入参数是:

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

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

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

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

我非常感谢您提供的任何帮助我清除此错误的意见。 提前致谢!

关于您的代码生成的几点 -

  1. 只有 MATLAB 和 Image Processing Toolbox 中的一部分函数支持代码生成 - Image Processing Toolbox 支持代码生成

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

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

我有一个类似的错误,即代码生成不支持通过索引进行可变大小增长 在我的 for 循环中,我有一个语句,它有相同的错误:

y(i) = k;

我引入了一个临时存储变量 u 并将我的代码修改为:

u = y;
u(i) = k;
y = u;

我建议你对可变车道做同样的事情

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM