ssGetPWork doesnt work in callbacks mdlInitializeSizes and mdlInitializeSampleTimes

Hello to everyone,
can somebody tell me why in sfunctions I can not store an object in the callbacks mdlInitializeSizes and mdlInitializeSampleTimes? It works in all the other callback.
the code looks like this
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumPWork(S, 1); // or ssSetNumPWork(S, DYNAMICALLY_SIZED);
.....
ssGetPWork(S)[0] = (void *) new MyClass;
}
Thank you!
G.

Antworten (1)

Kaustubha Govind
Kaustubha Govind am 16 Feb. 2011
I don't believe that work vectors are even allocated until after mdlSetWorkWidths - mdlInitializeSizes and mdlInitializeSampleTimes are in the initialization stage of the S-function where attributes of work vectors can be set (like the number of work vectors, their widths, etc.) which can later be used for allocation.
Is there a reason you'd like to initialize your work vectors so early?

2 Kommentare

Thanks for your replay.
In my s-function the initialization depends on the parameters in input. In particular the parameters are manipulated by a method of a class. I would be nice instantiate an object of the class and store it once since I will use it in the other callbacks.
In that case, ssSetUserData and ssGetUserData might be more appropriate.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 16 Feb. 2011

Community Treasure Hunt

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

Start Hunting!

Translated by