Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB到C代码_C_Matlab_Cell Array_Codegen - Fatal编程技术网

MATLAB到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

我遵循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
在花括号周围:

代码生成仅支持“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(对象的)


我非常感谢您能为我清除此错误提供的任何帮助。提前谢谢

关于代码生成的几点-

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

  • 单元阵列尚不支持代码生成-

  • 在您的代码中,您的变量似乎在增长,即数组的初始大小无法支持您的工作流。你应该跟着


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

    y(i) = k;
    
    我引入了一个临时存储变量u,并将代码修改为:

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

    我建议您对可变通道也这样做。

    代码生成严重限制了它的处理能力。您可能希望MATLAB编译器()将一些MATLAB代码打包到可部署的独立应用程序中。