This structure does not have a field 'rbm'; new fields cannot be added when structure has been read or used. #MATLAB Coder

11 views (last 30 days)
The cope snippet is here:
function dbn = randDBN( dims, type )
#codegen %coder.extrinsic('cell');
% dbn.rbm = cell( numel(dims)-1, 1 ); % dbn=struct('rbm',zeros(3,1)); % dbn.rbm{1}=0;
dbn.rbm{numel(dims)-1, 1}=[]; % dims is [1 2 3 4]
Earlier I tried to initialize dbn.rbm with 0. it didnt worked as it was referring to the non-cell array element.
  1 Comment
Virtualkeeda
Virtualkeeda on 18 Aug 2018
Earlier I was using : dbn.rbm = cell( numel(dims)-1, 1 );
but cell operation cant be applied to struct in code generation. thats why I started using dbn.rbm{numel(dims)-1, 1}=[];

Sign in to comment.

Answers (1)

Ryan Livingston
Ryan Livingston on 20 Aug 2018
MATLAB Coder support for cell arrays inside of structures was added in MATLAB R2017b:
In R2017b the code:
function dbn = randDBN( dims, type )
%#codegen
% Make dbn.rbm a cell array with each element equal to []
dbn.rbm = repmat({[]}, numel(dims)-1,1);
works fine with:
>> codegen randDBN -args {1:4}

Products

Community Treasure Hunt

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

Start Hunting!