[英]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.