/*
* File : timestwo.c
* Abstract:
* An example C-file S-function for multiplying an input by 2,
* y = 2*u
*
* Simulink Coder note:
* This file can be used as is (noninlined) with Simulink Coder
* C rapid prototyping targets, or it can be inlined using the Target
* Language Compiler technology and used with any target. See
* matlabroot/toolbox/simulink/simdemos/simfeatures/tlc_c/timestwo.tlc
* the TLC code to inline the S-function.
*
* Copyright 1990-2013 The MathWorks, Inc.
*/
#define S_FUNCTION_NAME eso
#define S_FUNCTION_LEVEL 2
#include "simstruc.h"
#include "math.h"
/*================*
* Build checking *
*================*/
const real_T *numParam[6];
int b01=0,b02=0,b03=0;
float b0=0.0,h=0.0,theta;
/* Function: mdlInitializeSizes ===============================================
* Abstract:
* Setup sizes of the various vectors.
*/
static void mdlInitializeSizes(SimStruct *S)
{
ssSetNumSFcnParams(S, 6); //参数个数
if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
return; /* Parameter mismatch will be reported by Simulink */
}
ssSetNumContStates(S, 0);
ssSetNumDiscStates(S, 0);
for(int i=0;i<ssGetNumSFcnParams(S);i++)
{
numParam[i]=mxGetPr(ssGetSFcnParam(S,i));
}
b0 = *numParam[0];
b01 = *numParam[1];
b02 = *numParam[2];
b03 = *numParam[3];
h = *numParam[4];
theta= *numParam[5];
if (!ssSetNumInputPorts(S, 1)) return;
ssSetInputPortWidth(S, 0, 2);//输入个数
ssSetInputPortDirectFeedThrough(S, 0, 1);
if (!ssSetNumOutputPorts(S,1)) return;
ssSetOutputPortWidth(S, 0, 3);//输出个数
ssSetNumDWork(S,1);
ssSetDWorkWidth(S,0,3);
ssSetNumSampleTimes(S, 1);
/* specify the sim state compliance to be same as a built-in block */
ssSetSimStateCompliance(S, USE_DEFAULT_SIM_STATE);
ssSetOptions(S,
SS_OPTION_WORKS_WITH_CODE_REUSE |
SS_OPTION_EXCEPTION_FREE_CODE |
SS_OPTION_USE_TLC_WITH_ACCELERATOR);
}
/* Function: mdlInitializeSampleTimes =========================================
* Abstract:
* Specifiy that we inherit our sample time from the driving block.
*/
static void mdlInitializeSampleTimes(SimStruct *S)
{
//CONTINUOUS_SAMPLE_TIME
ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
//ssSetSampleTime(S, 0, 0.001);//设置采样时间
ssSetOffsetTime(S, 0, 0.0);
ssSetModelReferenceSampleTimeDefaultInheritance(S);
}
#define MDL_INITIALIZE_CONDITIONS
static void mdlInitializeConditions(SimStruct *S)
{
real_T *x = (real_T*)ssGetDWork(S,0);
x[0]=0.0;
x[1]=0.0;
x[2]=0.0;
}
int sign(float x)
{
int out=0;
out = x>0?1:x<0?-1:0;
return out;
}
float fal(float e,float a,float theta)
{
float result=0;
int s=0;
s=(sign(e+theta)-sign(e-theta))/2;
result = e*s*pow(theta,a-1)+(1-s)*pow(fabs(e),a)*sign(e);
return result;
}
/* Function: mdlOutputs =======================================================
* Abstract:
* y = 2*u
*/
static void mdlOutputs(SimStruct *S, int_T tid)
{
int_T i;
InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
real_T *y = ssGetOutputPortRealSignal(S,0);
real_T *x = (real_T*)ssGetDWork(S,0);
int_T width = ssGetOutputPortWidth(S,0);
float e=0.0,fe=0.0,fe1=0.0;
e=x[0]-(*uPtrs[1]);
fe=fal(e,0.5,theta);
fe1=fal(e,0.25,theta);
y[0]=x[0]+h*(x[1]-b01*e);
y[1]=x[1]+h*(x[2]-b02*fe+b0*(*uPtrs[0]));
y[2]=x[2]+h*(-b03*fe1);
for (i=0; i<width; i++)
{
x[i] = y[i];
}
/*
* This example does not implement complex signal handling.
* To find out see an example about how to handle complex signal in
* S-function, see sdotproduct.c for details.
*/
/*for (i=0; i<width; i++) {
*y++ = (*uPtrs[i]);
}*/
}
/* Function: mdlTerminate =====================================================
* Abstract:
* No termination needed, but we are required to have this routine.
*/
static void mdlTerminate(SimStruct *S)
{
}
#ifdef MATLAB_MEX_FILE /* Is this file being compiled as a MEX-file? */
#include "simulink.c" /* MEX-file interface mechanism */
#else
#include "cg_sfun.h" /* Code generation registration function */
#endif
没有合适的资源?快使用搜索试试~ 我知道了~
ADRC的m函数版本,离散化后的公式,用matlab-function写的
共191个文件
mat:135个
l:35个
m:6个
5星 · 超过95%的资源 需积分: 5 46 下载量 87 浏览量
2018-08-07
11:32:05
上传
评论 4
收藏 1.47MB ZIP 举报
温馨提示
ADRC的m函数版本,离散化后的公式,用matlab-function写的
资源推荐
资源详情
资源评论
收起资源包目录
ADRC的m函数版本,离散化后的公式,用matlab-function写的 (191个子文件)
untitled.slx.autosave 12KB
untitled3.slx.autosave 12KB
untitled6.slx.autosave 12KB
untitled4.slx.autosave 11KB
untitled5.slx.autosave 11KB
eso.c 4KB
td.c 4KB
nlsef.c 4KB
sbEU7cqHpco3dPxfs5Jzgm.l 19KB
sWtdHIRzrGsoFi3bgWJrSt.l 16KB
sFm3dSCi5NWYKL1wI1i5vPB.l 16KB
smCmrnw3NbRQtH13DobQeK.l 14KB
syMkOrFhUpRWHl7qvCI8BJC.l 14KB
sn535o26FmOmXxXnMKSxdQB.l 14KB
smhrzXEyTRGZ7jvv6o7dIoD.l 14KB
sIj4gHFQOnyD8jId8hT2o5F.l 14KB
sgtPNqvgTaXrxTUcJzCz0eE.l 14KB
s1OowSEjOzwWkTjH6IWuPpC.l 13KB
slUWK9XSl8qsei04pOt6Y4G.l 12KB
sb8JUwL4Eca48KPXaagFQpB.l 12KB
skam1Xx42VuumYY4eDbcWLF.l 12KB
stLFAk7U4JN2BN80v4KlxlB.l 11KB
s7aeckamPymN83KvR3j3KMH.l 11KB
shj0QpEjm8CNuzsm0FZxg6E.l 11KB
smFDImAPfl0ReFwRXVYnQlG.l 11KB
sH6EVZRozYq5wLrt46T23YD.l 11KB
sLLCaFBZo3rRPrrPF1zoRd.l 11KB
sjf64DTzNpjetZwsQHAbubF.l 11KB
sVGk6Oj7Pu05qnp1X9acjND.l 10KB
sd6o93SDqlI0DZ6VTBs917G.l 10KB
sqiGIOev5PBLydNPEsSvOGD.l 10KB
sK0IX6SC1ieEdB1QCgSbk3D.l 10KB
sXiZCMM8OMGYpdST33gAzxE.l 10KB
sOwMaCUpp50RorTUHmKbW2B.l 10KB
soYqYlUOTR3vm1AKKlzoviB.l 10KB
sHS3tz2lFj4RDvFMlGDhQIE.l 10KB
sizWjBdZSUo6G2qwgRKsff.l 10KB
s6SoaPGthhwtu7DtzjrHIPB.l 10KB
sI5dX58hEbyThOxjZinYWs.l 10KB
szqO0pL4mnyqvCZmXOxUIs.l 10KB
scOgTqpHJaRPr5L1698HsfH.l 10KB
sEoeHiFYRspd8CHZOKzL2v.l 10KB
su6TdKua255JPVL9zSFzpCD.l 10KB
ESO_s.m 10KB
TD.m 10KB
ESO.m 280B
tuning.m 258B
fhan.m 0B
ssSetNumSampleTimes.m 0B
stLFAk7U4JN2BN80v4KlxlB.mat 34KB
sK0IX6SC1ieEdB1QCgSbk3D.mat 33KB
soYqYlUOTR3vm1AKKlzoviB.mat 33KB
sd6o93SDqlI0DZ6VTBs917G.mat 33KB
sXiZCMM8OMGYpdST33gAzxE.mat 33KB
sqiGIOev5PBLydNPEsSvOGD.mat 33KB
s6SoaPGthhwtu7DtzjrHIPB.mat 33KB
sizWjBdZSUo6G2qwgRKsff.mat 33KB
sI5dX58hEbyThOxjZinYWs.mat 33KB
sHS3tz2lFj4RDvFMlGDhQIE.mat 33KB
sVGk6Oj7Pu05qnp1X9acjND.mat 33KB
su6TdKua255JPVL9zSFzpCD.mat 33KB
sOwMaCUpp50RorTUHmKbW2B.mat 33KB
sEoeHiFYRspd8CHZOKzL2v.mat 33KB
scOgTqpHJaRPr5L1698HsfH.mat 33KB
skam1Xx42VuumYY4eDbcWLF.mat 33KB
sb8JUwL4Eca48KPXaagFQpB.mat 33KB
slUWK9XSl8qsei04pOt6Y4G.mat 33KB
smhrzXEyTRGZ7jvv6o7dIoD.mat 32KB
sn535o26FmOmXxXnMKSxdQB.mat 32KB
syMkOrFhUpRWHl7qvCI8BJC.mat 32KB
smCmrnw3NbRQtH13DobQeK.mat 32KB
shj0QpEjm8CNuzsm0FZxg6E.mat 32KB
sWtdHIRzrGsoFi3bgWJrSt.mat 29KB
sFm3dSCi5NWYKL1wI1i5vPB.mat 29KB
sbEU7cqHpco3dPxfs5Jzgm.mat 29KB
s7aeckamPymN83KvR3j3KMH.mat 29KB
smFDImAPfl0ReFwRXVYnQlG.mat 29KB
szqO0pL4mnyqvCZmXOxUIs.mat 28KB
s1OowSEjOzwWkTjH6IWuPpC.mat 17KB
sIj4gHFQOnyD8jId8hT2o5F.mat 3KB
sgtPNqvgTaXrxTUcJzCz0eE.mat 3KB
autoInferAccessInfo.mat 3KB
prn7g1v5e7373udgrcnvyC.mat 3KB
sjf64DTzNpjetZwsQHAbubF.mat 3KB
sH6EVZRozYq5wLrt46T23YD.mat 3KB
sLLCaFBZo3rRPrrPF1zoRd.mat 3KB
QksYBoM3Q5EWBc9uIIVt1C.mat 3KB
emlReportAccessInfo.mat 2KB
jitEngineAccessInfo.mat 2KB
ZbBXRGEW8AsEdFMbbNunLD.mat 874B
binfo.mat 862B
XZ1vbGOgLcJxI4YVrOGkiF.mat 858B
sbEU7cqHpco3dPxfs5Jzgm.mat 778B
sWtdHIRzrGsoFi3bgWJrSt.mat 776B
sFm3dSCi5NWYKL1wI1i5vPB.mat 771B
syMkOrFhUpRWHl7qvCI8BJC.mat 768B
sIj4gHFQOnyD8jId8hT2o5F.mat 764B
smhrzXEyTRGZ7jvv6o7dIoD.mat 762B
sn535o26FmOmXxXnMKSxdQB.mat 761B
sgtPNqvgTaXrxTUcJzCz0eE.mat 757B
共 191 条
- 1
- 2
资源评论
- BJWcn2023-07-24这个文件提供了一种有效的ADRC函数版本,离散化的公式让算法更具实用性。
- 呆呆美要暴富2023-07-24这个文件对于ADRC算法的实现提供了一个有用的参考,适用于多种应用场景,值得进一步的研究和推广。
- 柔粟2023-07-24使用matlab-function编写的ADRC函数版本,使得代码结构清晰易懂,方便进一步的算法调试和优化。
- 玛卡库克2023-07-24值得称赞的是,这个文件中的ADRC函数版本结构简洁,易于理解和使用。
- 焦虑肇事者2023-07-24这个文件提供的ADRC函数版本,通过离散化公式的设计,能够更好地适应实际问题的需求。
斑马线cow
- 粉丝: 12
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功