⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_xmp6.c

📁 线性调频信号通过匹配滤波器的程序 还有一些simulink仿真模型
💻 C
字号:
/* *****************************************************//*                        s_xmp6                       *//*   This is a C version of the S-file subsystem that  *//*   implements a discrete PID controller.             *//*                                                     *//* Based on MathWorks template file                    *//* Copyright (c) 1990-96 by The MathWorks, Inc.        *//* All Rights Reserved                                 *//* *****************************************************/#define S_FUNCTION_NAME s_xmp6#include "simstruc.h"#include "math.h"#define Kp_macro      *mxGetPr(ssGetArg(S,0))#define Ki_macro      *mxGetPr(ssGetArg(S,1))#define Kd_macro      *mxGetPr(ssGetArg(S,2))#define L_upper_macro *mxGetPr(ssGetArg(S,3))#define L_lower_macro *mxGetPr(ssGetArg(S,4))#define T_samp_macro  *mxGetPr(ssGetArg(S,5))/* *****************************************************//*                    mdlInitializeSizes               *//* *****************************************************/static void mdlInitializeSizes(SimStruct *S){    ssSetNumContStates(    S, 0);       ssSetNumDiscStates(    S, 1);       ssSetNumInputs(        S, 1);       ssSetNumOutputs(       S, 1);       ssSetDirectFeedThrough(S, 1);       ssSetNumSampleTimes(   S, 1);       ssSetNumSFcnParams(    S, 6);       ssSetNumRWork(         S, 1);       ssSetNumIWork(         S, 0);  /* integer work vec */    ssSetNumPWork(         S, 0);  /* pointer work vec */}/* *****************************************************//*               mdlInitializeSampleTimes              *//* *****************************************************/static void mdlInitializeSampleTimes(SimStruct *S){   double T_samp ;   T_samp = T_samp_macro ;   ssSetSampleTime(S, 0, T_samp);   ssSetOffsetTime(S, 0, 0.0);}/* *****************************************************//*                   mdlInitializeConditions           *//* *****************************************************/static void mdlInitializeConditions(double *x0,                                    SimStruct *S){   *x0 = 0.0 ;   ssSetRWorkValue(S, 0, 0.0) ; /* Initialize to zero */}/* *****************************************************//*                         mdlOutputs                  *//* *****************************************************/static void mdlOutputs(double *y, double *x, double *u,                       SimStruct *S, int tid){  double Kp, Ki, Kd, T_samp, u_prev, u_deriv ;    Kp = Kp_macro ;  Ki = Ki_macro ;  Kd = Kd_macro ;  T_samp = T_samp_macro ;  u_prev = ssGetRWorkValue(S, 0) ;  ssSetRWorkValue(S, 0, *u) ; /* Reset to current input */  u_deriv = (*u - u_prev)/T_samp ;  *y = Kp*(*u) + Ki*(*x) + Kd*u_deriv ;}/* *****************************************************//*                           mdlUpdate                 *//* *****************************************************/static void mdlUpdate(double *x, double *u, SimStruct *S,                      int tid){   double T_samp, L_upper, L_lower ;   T_samp = T_samp_macro ;   L_upper = L_upper_macro ;   L_lower = L_lower_macro ;   *x = *x + T_samp*(*u) ;          /* Compute update */   if(*x > L_upper) *x = L_upper ;  /* Apply limits */   if(*x < L_lower) *x = L_lower ;}/* *****************************************************//*                           mdlDerivatives            *//* *****************************************************/static void mdlDerivatives(double *dx, double *x,                           double *u, SimStruct *S,                           int tid){}/* *****************************************************//*                           mdlTerminate              *//* *****************************************************/static void mdlTerminate(SimStruct *S){}#ifdef MATLAB_MEX_FILE  #include "simulink.c"   #else#include "cg_sfun.h"    #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -