MATLAB Answers


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

Asked by Amit
on 18 Aug 2018
Latest activity Answered by Ryan Livingston on 20 Aug 2018
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

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.

1 Answer

Answer by 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 )
% 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}


Sign in to comment.