What is the proper syntax for feeding a C struct (defined in a header file) to a MATLAB function?
조회 수: 12 (최근 30일)
이전 댓글 표시
SUMMARY: With MATLAB Coder, what is the proper syntax for passing a C struct (defined in a header file) to a MATLAB function?
- define a C struct in a header file,
- defined a MATLAB equivalent of the struct with coder.typeof commands, and finally
- link the two types of structs with a coder.cstructname command.
I want to use a C main function to
- create an instance of a C struct (that is defined in a header file, say mystruct.h) and
- feed that struct to a MATLAB function (defined in an m-file, say foo.m, containing a %#codegen notification).
- Suppose p is an instance of the C struct.
- Suppose also that main.c has #include "mystruct.h".
- Suppose that the main C function calls foo with foo(p);.
If the struct class T is defined by defining the individual fields and ending with
T = coder.cstructname(T,'mystruct','extern','HeaderFile','mystruct.h');
will MATLAB Coder infer the correct input type for foo with the following sequence of commands for code generation?
cfg = coder.config('exe')
cfg.CustomSource = 'main.c'
cfg.CustomInclude = 'mystruct.h'
codegen -config cfg foo -args {T}
댓글 수: 0
채택된 답변
Darshan Ramakant Bhat
2020년 11월 18일
You are almost there. I just want to clarify few things.
Let's say that the struct that you have difined looked like below :
typedef struct {
double f1;
float f2;
} mycstruct;
Then you have do like below in MATLAB Coder
>> T.f1 = 0;
>> T.f2 = single(0);
>> T1 = coder.cstructname(T,'mycstruct','extern','HeaderFile','myheader.h');
>> T1
T1 =
coder.StructType
HeaderFile: myheader.h
1×1 extern mycstruct struct
f1: 1×1 double
f2: 1×1 single
Edit Type Object
Like the last line you can display the variable in MATLAB to make sure that the coder.type object created is proper.
You can use the "T1" to define the argument type in MATLAB Coder
cfg = coder.config('exe')
cfg.CustomSource = 'main.c'
cfg.CustomInclude = 'myheader.h'
codegen -config cfg foo -args {T1}
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Generating Code에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!