簡體   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