MATLAB coder error:Unable to determine that every element of cell is assigned before this line
1 view (last 30 days)
Show older comments
WHEN USING MATLAB CODER TO GENERATE C CODE,
I faced up with the error :"Unable to determine that every element of 'region{:}' is assigned before this line. "
I checked the guidance and set the code into form the same as which in the guidance:
region = cell(rlen,1);
for rn = 1:rlen
region{rn}=[0,0];
end
But the error still in. Anyone can help?
Thanks a lot.
Followed as part of my code:
region = cell(rlen,1);
for rn = 1:rlen
region{rn}=[0,0];
end
%% region init
regionr = int16(zeros(length(region),1));
for ii = 1:length(region)
regionr(ii) = int16(sqrt(double(region{ii}(1)^2 +double(region{ii}(2)^2))));
%% error occured here:
%%Unable to determine that every element of 'region{:}' is assigned before this line.
end
3 Comments
Jan
on 3 Dec 2021
The code can be simplified:
% ------------------------------------
region = cell(rlen,1);
for rn = 1:rlen
region{rn} = [0,0];
end
% Shorter and faster:
region = cell(rlen, 1);
region(:) = {[0, 0]};
% ------------------------------------
regionr = int16(zeros(length(region),1));
% Faster:
regionr = zeros(rlen, 1, 'int16');
% ------------------------------------
for ii = 1:length(region)
regionr(ii) = int16(sqrt(double(region{ii}(1)^2 +double(region{ii}(2)^2))));
end
% Easier: region{ii} is a double already. You cast region{ii}(2)^2 to a
% double, add it to region{ii}(1)^2 and cast the result to a double again.
% This is confusing only. Leaner:
for ii = 1:rlen
regionr(ii) = int16(sqrt(region{ii}(1)^2 + region{ii}(2)^2));
end
But I do not see an error also.
Accepted Answer
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!