How do I declare a variable non-automatically on Matlab?

1 view (last 30 days)
Ricardo Sampaio
Ricardo Sampaio on 15 Sep 2015
Answered: dpb on 15 Sep 2015
I'm trying to use Matlab coder to generate a C file from a Matlab code. However, when I build the project it doesn't recognize one of my local variables properly - it mistakes its class - giving the following error: "Undefined function or variable 'B'. The first assignment to a local variable determines its class." It was supposed to be a struct array, but it's recognized as an unknown class of size 1x1. I've tried to assign it as an array from the beggining as the first lines of my code are:
B(n,n).obs=0; %n is the array size
B(n,n).custo=0;
B(n,n).visitado=0;
Although it still does not work!

Accepted Answer

Titus Edelhofer
Titus Edelhofer on 15 Sep 2015
Hi Ricardo,
you can use struct and repmat to initialize your structure:
B = repmat( struct( ...
'obs', 0, ...
'custo', 0, ...
'visitado', 0), n, n);
Titus

More Answers (1)

dpb
dpb on 15 Sep 2015
Don't have the coder to test, but how about
>> B=struct('obs',0,'cust',0,'visit',0)
B =
obs: 0
cust: 0
visit: 0
>> whos B
Name Size Bytes Class Attributes
B 1x1 396 struct
>>
Setting B(n,n) on LHS of above will generate a structure array of that size. Now whether the coder is capable-enough to implement structures you'll have to check the documentation to tell.

Community Treasure Hunt

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

Start Hunting!