Matlab/Simulink: Минимальный пустой шаблон S-функции
Вы можете использовать эту минимальную пустую S-функцию как шаблон для начала работы с собственной S-функцией.
Этот минимальный пример также включает шаблон mdlStart().
Помните, что если вы переименуете файл, вам также нужно обновить #define S_FUNCTION_NAME соответственно.
nothing_sfunction.cpp
#define S_FUNCTION_NAME nothing_sfunction
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Function: mdlInitializeSizes ===============================================
// Abstract:
// Настройка размеров различных векторов.
static void mdlInitializeSizes(SimStruct *S)
{
// Добавьте ssSetNumInputPorts() и т.д. здесь
}
#define MDL_START
static void mdlStart(SimStruct *S)
{
// Опционально, выполните задачи инициализации здесь
// Если не нужно, вы можете удалить эту функцию и #define MDL_START полностью.
}
// Function: mdlInitializeSampleTimes =========================================
// Abstract:
// Инициализация времён выборки как 1мс (1кГц)
static void mdlInitializeSampleTimes(SimStruct *S)
{
// Пример того, что добавить здесь, см. https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlOutputs =======================================================
// Abstract:
// Вычисление выходного сигнала синусоиды на основе времени симуляции.
static void mdlOutputs(SimStruct *S, int_T tid)
{
// Пример того, что добавить здесь, см. https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlTerminate =====================================================
// Abstract:
// Эта функция вызывается в конце симуляции для очистки.
static void mdlTerminate(SimStruct *S)
{
// Для этого примера очистка не требуется
}
// Required S-function trailer
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // MEX-file interface mechanism
#else
#include "cg_sfun.h" // Code generation interface
#endifКомпиляция с помощью
build_nothing_sfunction.sh
mex -g nothing_sfunction.cpp CXXFLAGS="-std=gnu++17 -fPIC"Использование -std=gnu++17 или новее рекомендуется, но не обязательно.
Check out similar posts by category:
Matlab/Simulink, C++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow