What is the proper syntax for feeding a C struct (defined in a header file) to a MATLAB function?
13 次查看(过去 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!