MATLAB coder error:Unable to determine that every element of cell is assigned before this line
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Jan
le 3 Déc 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.
Réponse acceptée
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur MATLAB Coder dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!