Variable cell array size for mex function does not work

2 次查看(过去 30 天)
Hey,
I' am trying to bypass the 32bit limit of the MatLab coder, so I chunked my matrix into pieces and wnt to give that pieces into my function. Those subatrizes are arrays within a cell.
Depending on the size of the original matrix, the number of pieces varies, but I am unable to tell MatLab Coder so.
I tried:
coder.varsize('data{:}', [1 20]);
coder.varsize('data', [1 20]);
but both did not work. In coder when I declare the dimensions of the input variables I cant change the value of the cell array dimension.
My trial code looks like:
nums=7000;
cut_limit=5000;
adjacend_matrix=false(nums);
adjacend_matrix(1:nums+1:end)=true;
if length(adjacend_matrix)>=cut_limit
parts=ceil(length(adjacend_matrix)/cut_limit);
cropdata=adjacend_matrix(:,1:cut_limit*(parts-1));
newdata = mat2cell(cropdata, repelem(length(adjacend_matrix),1),repelem(cut_limit,parts-1));
coder.varsize('newdata{:}', [20 1]);
coder.varsize('newdata', [20 1]);
newdata{parts,1}=adjacend_matrix(:,(parts-1)*cut_limit+1:end);
else
newdata = mat2cell(adjacend_matrix, length(adjacend_matrix), length(adjacend_matrix));
end
testvarstrcut(newdata,cut_limit,nums);
I dont use the cell function, which coud be a limitation according to https://de.mathworks.com/help/releases/R2018a/coder/ref/coder.varsize.html?s_tid=doc_ta#btxep35-2
(unless mat2cell counts as "the" cell function). Maybe the problem is that according to limitations declaration must follow the first assignment, which is impossible using mat2cell.
Could someone tell me how to manage it that a mex function would accept newdata as input indepenenden on how many arrays are within it?
Many thanks in advance
Best regards

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB Coder 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by