MATLAB到C代码
我遵循MathWorks指南将MATLAB代码转换为C代码。 第一步是进入 %#编码基因 在我想要转换成C代码的每个函数之后,但是这样做会给我以下代码的提示MATLAB到C代码,c,matlab,cell-array,codegen,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/sta
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-是图像处理工具箱函数的输出。它是一个P×1单元数组,其中P是对象和孔的数量。单元阵列中的每个单元都包含一个Q-x-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函数获取,包含以下字段:
主轴长度和
MinorAxisLength(对象的)
我非常感谢您能为我清除此错误提供的任何帮助。提前谢谢 关于代码生成的几点-
我有一个类似的错误,即代码生成不支持通过索引进行可变大小的增长。在for循环中,我有一个这样的语句,它有相同的错误:
y(i) = k;
我引入了一个临时存储变量u,并将代码修改为:
u = y;
u(i) = k;
y = u;
我建议您对可变通道也这样做。代码生成严重限制了它的处理能力。您可能希望MATLAB编译器()将一些MATLAB代码打包到可部署的独立应用程序中。