Difference between c function and s function

9 次查看(过去 30 天)
Is there any difference between c function and s function block?In the mathlab documentation I saw as
"The C Function block supports initializing persistent data and calling external functions from the block dialog. The C Function block supports only initializing and terminating persistent data; the block does not support updating the data during simulation. To model a dynamic system with continuous states, use an S-Function block. "
Can anyone explain me this difference with some example? Or whether this difference is no longer there in new version(2024a) of Matlab?

采纳的回答

Jaimin
Jaimin 2024-9-6
Hello @AKHILA
The distinction between the “C Function block” and the “S-Function block” in Simulink can be clarified by examining their capabilities and intended use cases:
C Function Block
  • Purpose: The C Function block is intended for embedding custom C code into a Simulink model. It is generally used for straightforward computations and invoking external C functions.
  • Initialization: It allows for the initialization of persistent data, enabling data to maintain its value across function calls.
  • Limitations: The block does not allow for updating persistent data during simulation, meaning you cannot have persistent states that evolve over time within the block.
  • Use Case: Best suited for static computations or functions that do not need state updates.
S-Function Block
  • Purpose: The S-Function block is highly versatile and robust, enabling the creation of custom blocks that can manage complex behaviors, including dynamic systems with states.
  • Initialization and Termination: It allows for both the initialization and termination of persistent data.
  • State Updates: In contrast to the C Function block, the S-Function block can handle both continuous and discrete states, making it ideal for modelling dynamic systems.
  • Use Case: Perfect for modelling intricate dynamic systems that necessitate state updates throughout the simulation.
Example Scenario
  • C Function Block Example: Imagine you have a C-written mathematical function that computes the square root of a number. The C Function block can be used to call this function within a Simulink model. The computation is static, with no need for state updates.
  • S-Function Block Example: Consider simulating a simple harmonic oscillator, a system with continuous states (position and velocity) that evolve over time. An S-Function block would be used to implement the differential equations that describe the oscillator's motion, as it supports state updates during the simulation.
To check “C-Function Block” and “S-Function Block” working in MATLAB R2024a please refer this MathWorks Documentation
I hope this will be helpful.
  1 个评论
AKHILA
AKHILA 2024-9-6
编辑:AKHILA 2024-10-29,6:40
Thanks @Jaimin, thank you for your answer. I was experimneting the block with an example of integrater
double integrate1(double input)
{
static double state = 0; // Persistent state variable
state = state+ input; // Update state
return state; // Output state
}
Here in this code, we are updating the value of state, and it's working in c function. That's why I got confused. Can you help me in clarifying my doubt in this case

请先登录,再进行评论。

更多回答(0 个)

类别

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

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by