MATLAB Coder does not recognize dot notation in struct member assignment

조회 수: 1 (최근 30일)
Aaron Rice
Aaron Rice 2022년 8월 9일
답변: Konstantinos Athanasiou 2022년 8월 11일
% Unable to generate C Code using MATLAB Coder for simplified example function shown below. Error description states, "This assignment
% writes a 'double' value into a 'struct' type. Code generation does not support changing types through assignment. Check preceding
% assignment or input type specifications for type mismatches ".
function ExampleFunction() %#codegen
global SD
SD.a = 0.0;
SD.b = 1.0;
SD.a = SD.b;
end

답변 (2개)

Benjamin Thompson
Benjamin Thompson 2022년 8월 11일
See the article "Name the C Structure Type to Use With a Global Structure Variable" in the MATLAB help documentation. You need to register the struct type with coder and map struct variables to registered types.

Konstantinos Athanasiou
Konstantinos Athanasiou 2022년 8월 11일
The following codegen command compiles without errors for the provided example.
% codegen t -globals {'SD', struct('a', double(0), 'b', double(0))}
function r = t
global SD;
SD.a = 0.1;
SD.b = 0.2;
SD.a = SD.b;
r = SD.a;
end

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by