Matlab/Simulink : Comment extraire un paramètre S-Function en std::string
Cette fonction utilitaire vous permet d’extraire un paramètre de type chaîne de caractères d’une S-Function dans MATLAB/Simulink et de le retourner comme un std::string. Elle gère le cas où le paramètre n’est peut-être pas défini ou n’est pas une chaîne, en retournant une valeur par défaut si nécessaire.
extract_sfunction_param.cpp
// Fonction utilitaire pour obtenir un paramètre de type chaîne depuis les paramètres S-Function
static std::string extractSFunctionParameterAsString(SimStruct *S, int paramIndex, const std::string& defaultValue = "default") {
const mxArray* param = ssGetSFcnParam(S, paramIndex);
if (param == nullptr || !mxIsChar(param)) {
return defaultValue; // Valeur par défaut de secours
}
// Obtenir la longueur de la chaîne et allouer le buffer
mwSize nameLen = mxGetNumberOfElements(param) + 1;
char* nameBuffer = new char[nameLen];
// Extraire la chaîne du paramètre MATLAB
if (mxGetString(param, nameBuffer, nameLen) == 0) {
std::string result(nameBuffer);
delete[] nameBuffer;
return result;
} else {
delete[] nameBuffer;
return defaultValue;
}
}N’oubliez pas de définir le nombre de paramètres dans votre S-Function avec ssSetNumSFcnParams() dans mdlInitializeSizes() et de définir le paramètre dans votre modèle Simulink :
sfunction_param_example.c
static void mdlInitializeSizes(SimStruct *S) {
ssSetNumSFcnParams(S, 1); // Définir le nombre de paramètres
// Exemple d'utilisation
std::string myParam = extractSFunctionParameterAsString(S, 0, "default_value");
// Utiliser myParam selon les besoins
}Consultez les articles similaires par catégorie :
Matlab/Simulink
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow