MATLAB coder error:Unable to determine that every element of cell is assigned before this line
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
Jan
2021-12-3
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.
采纳的回答
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!