簡體   English   中英

使用 Matlab 編碼器將 Matlab 代碼轉換為 C++ - 單元問題

[英]Converting Matlab code to C++ with Matlab Coder - Cell problem

我正在嘗試在 Matlab 編碼器中將 function 轉換為 C++。有一個單元格變量,在構建 mex 時會出錯。

     R=cell(1,n);
for i=1:wi
        for j=1:hi
            if(cin(i,j)>0)
                     k=cin(i,j);
                    for x=i-2*rx+1:i+2*rx-1
                        for y=j-2*ry+1:j+2*ry-1
                                if(x>=1 && y>=1 && x<=wi && y<=hi)
                                    R{k}=[R{k}, (x-1)*wi+y];
                            end
                        end
                    end
            end
         end
end

它在 R{k}=[R{k}, (x-1)*wi+y] 上給出錯誤; 部分

“嘗試訪問使用前未定義的元素。”

有人可以幫我解決這個問題嗎?

對於代碼生成,您必須在使用之前定義(即分配)所有元胞數組元素。 這里R{k}在被分配之前使用。 即,該分配的 RHS 上的R{k}在分配之前讀取該元素。

如果您希望元素是空矩陣[] ,那么您可以聲明R如下:

% Cells should be varsize to grow them later on
coder.varsize('R{:}');

% Initialize all cells to empty
R = repmat({[]}, 1, n);

for i=1:wi
        for j=1:hi
            if(cin(i,j)>0)
                     k=cin(i,j);
                    for x=i-2*rx+1:i+2*rx-1
                        for y=j-2*ry+1:j+2*ry-1
                                if(x>=1 && y>=1 && x<=wi && y<=hi)
                                    R{k}=[R{k}, (x-1)*wi+y];
                            end
                        end
                    end
            end
         end
end

MATLAB 編碼器文檔中的更多詳細信息:

https://www.mathworks.com/help/simulink/ug/cell-array-restrictions-for-code-generation.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM