我正在按照 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(对象的)
如果您能提供帮助我清除此错误的任何意见,我将不胜感激。提前致谢!
最佳答案
关于代码生成的几点说明 -
MATLAB 和图像处理工具箱中只有一部分函数支持代码生成 - Image Processing Toolbox support for code generation .
元胞数组尚不支持代码生成 - Cell array support .
在您的代码中,您的变量似乎在增长,即数组的初始大小无法支持您的工作流程。你应该关注code generation for variable sized inputs .
关于c - MATLAB 到 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478377/