MATLAB编写S函数,C语言版本

#define S_FUNCTION_NAME MFAC // phi(k)=…=phi(k+p)
#define S_FUNCTION_LEVEL 2

#define N 2 // \tau_bar=N-1, the control prediction horizon U[0:N-1]

//#define SAMPLETIME 0.01

/*

  • Need to include simstruc.h for the definition of the SimStruct and
  • its associated macro definitions.
    */
    #include “simstruc.h”

/*====================*

  • S-function methods *
    *====================*/

double rho, lambda; //eta0, mu0, phik0,

/* Function: mdlInitializeSizes ===============================================

  • Abstract:
  • The sizes information is used by Simulink to determine the S-function
  • block’s characteristics (number of inputs, outputs, states, etc.).
    */
    static void mdlInitializeSizes(SimStruct S)
    {
    /
    See sfuntmpl_doc.c for more details on the macros below */
ssSetNumSFcnParams(S, 0);  /* Number of expected parameters */
if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
    /* Return if number of expected != number of actual parameters */
    return;
}

ssSetNumContStates(S, 0);
ssSetNumDiscStates(S, 0);

if (!ssSetNumInputPorts(S, 1)) return;
ssSetInputPortWidth(S, 0, 1+1+1+N+1);  // timestamp/ phik/ yk/ r(k+1),...,r(k+tau_bar+1) / u(k-1)
ssSetInputPortRequiredContiguous(S, 0, true); 
/*
* Set direct feedthrough flag (1=yes, 0=no).
* A port 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值