Matlab/Simulink: Minimální prázdná šablona S-function
Tuto minimální, prázdnou s-function můžete použít jako šablonu pro začátek s vaší vlastní S-function.
Tento minimální příklad také obsahuje šablonu mdlStart().
Pamatujte, že pokud přejmenujete soubor, musíte také aktualizovat #define S_FUNCTION_NAME odpovídajícím způsobem.
nothing_sfunction.cpp
#define S_FUNCTION_NAME nothing_sfunction
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
// Function: mdlInitializeSizes ===============================================
// Abstract:
// Setup sizes of the various vectors.
static void mdlInitializeSizes(SimStruct *S)
{
// Add ssSetNumInputPorts() etc here
}
#define MDL_START
static void mdlStart(SimStruct *S)
{
// Optionally, perform initialization tasks here
// If not needed, you can remove this function and #define MDL_START entirely.
}
// Function: mdlInitializeSampleTimes =========================================
// Abstract:
// Initialize the sample times to be 1ms (1kHz)
static void mdlInitializeSampleTimes(SimStruct *S)
{
// For an example what to add here, see https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlOutputs =======================================================
// Abstract:
// Calculate the sine wave output based on the simulation time.
static void mdlOutputs(SimStruct *S, int_T tid)
{
// For an example what to add here, see https://techoverflow.net/2024/10/20/matlab-level-2-s-function-example-sine-wave-continous-output/
}
// Function: mdlTerminate =====================================================
// Abstract:
// This function is called at the end of simulation for cleanup.
static void mdlTerminate(SimStruct *S)
{
// No cleanup required for this example
}
// Required S-function trailer
#ifdef MATLAB_MEX_FILE
#include "simulink.c" // MEX-file interface mechanism
#else
#include "cg_sfun.h" // Code generation interface
#endifZkompilujte pomocí
build_nothing_sfunction.sh
mex -g nothing_sfunction.cpp CXXFLAGS="-std=gnu++17 -fPIC"Použití -std=gnu++17 nebo novějšího je doporučeno, ale není vyžadováno.
Podívejte se na podobné články podle kategorie:
Matlab/Simulink, C++
Pokud vám tento článek pomohl, zvažte, zda mi nekoupíte kávu nebo nepřispějete přes PayPal na podporu výzkumu a publikování nových článků na TechOverflow