Arrays as input signals for CMEX function

2 次查看(过去 30 天)
Rob
Rob 2014-8-11
编辑: Rob 2014-8-11
Hi, I really searched Google, the MATLAB Online Docs and the MATLAB Answers for this, but didn't get any result.
I need to accept a dynamically sized array as input signal for my CMEX SFunction. I copied the example from the ssGetInputPortSignal online description and it just threw an error because of this line:
UseInputInSomeFunction(*u[j]);
When I compile, it says:
error C2100: illegal indirection
It gets the width correctly, but fails in accessing the array.. Even if I force the indirection by casting to a double pointer or stuff, MATLAB crashes because of an access violation (of course...). I did not find one single example on how to access elements of an array. Please, please, provide one. It can't be that hard :-P
Thank you very much!!
EDIT:
I changed the code and inserted output and it turns out that every 2n-1 element in the array has the value 0:
Code:
const real_T **u1 = (const real_T**) ssGetInputPortSignal(S,1);
for (int i=0;i<(int)ssGetInputPortWidth(S, 1);i++) {
std::cout << u1[i] << "," << std::flush;
}
std::cout << ")" << std::endl;
Output:
u1 width: 10
u1 elements: (00000000,3FF00000,00000000,40000000,00000000,40080000,00000000,40100000,00000000,40140000,)
Btw:
std::cout << *u1[i]
still gives me the compiler error C2100 or (if I do some tricks to get rid of the compiler error) causes MATLAB to crash...

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulink 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by