资源简介

Matlab中,用c或m语言编写s函数.rar Matlab中,用c或m语言编写s函数.rar 有具体例子 非常适合新手

资源截图

代码片段和文件信息

/*  File    : sfun_counter_cpp.cpp
 *  Abstract:
 *
 *      Example of an C++ S-function which stores an C++ object in
 *      the pointers vector PWork.
 *
 *  Copyright 1990-2005 The MathWorks Inc.
 *  $Revision: 1.4.4.5 $
 */

#include 

#ifdef __cplusplus
extern “C“ { // use the C fcn-call standard for all functions  
#endif       // defined within this scope                     

#define S_FUNCTION_LEVEL 2
#define S_FUNCTION_NAME  gplCnComm

/*
 * Need to include simstruc.h for the definition of the SimStruct and
 * its associated macro definitions.
 */
//need to put “.h“ files into folder: \simulink\include
#include “simstruc.h“
#include “CnComm.h“

#include 

#define BAUDRATE 9600
#define SAMPLETIME 0.15

//global vars:
CnComm com_simulink;//默认:启动监视线程,重叠IO(异步模式)
double  num = 3.0;
char str[] = “Hello how are you!\n“;


#define IS_PARAM_DOUBLE(pVal) (mxIsNumeric(pVal) && !mxIsLogical(pVal) &&\
!mxIsEmpty(pVal) && !mxIsSparse(pVal) && !mxIsComplex(pVal) && mxIsDouble(pVal))

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

#define MDL_CHECK_PARAMETERS
#if defined(MDL_CHECK_PARAMETERS)  && defined(MATLAB_MEX_FILE)
/*
 * Check to make sure that each parameter is 1-d and positive
 */
static void mdlCheckParameters(SimStruct *S)
{

    const mxArray *pVal0 = ssGetSFcnParam(S0);

    if ( !IS_PARAM_DOUBLE(pVal0)) {
        ssSetErrorStatus(S “Parameter to S-function must be a double scalar“);
        return;
    } 
}
#endif


/* 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 for more details on the macros below */

    ssSetNumSFcnParams(S 1);  /* Number of expected parameters */
#if defined(MATLAB_MEX_FILE)
    if (ssGetNumSFcnParams(S) == ssGetSFcnParamsCount(S)) {
        mdlCheckParameters(S);
        if (ssGetErrorStatus(S) != NULL) {
            return;
        }
    } else {
        return; /* Parameter mismatch will be reported by Simulink */
    }
#endif
    ssSetSFcnParamTunable(S 0 0);

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

    if (!ssSetNumInputPorts(S 0)) return;
    
    if (!ssSetNumOutputPorts(S 1)) return;
    ssSetOutputPortWidth(S 0 1);

    ssSetNumSampleTimes(S 1);//only one sample timer
    ssSetNumRWork(S 0);
    ssSetNumIWork(S 0);
    ssSetNumPWork(S 1); // reserve element in the pointers vector
    ssSetNumModes(S 0); // to store a C++ object
    ssSetNumNonsampledZCs(S 0);

    ssSetOptions(S 0);
}



/* Function: mdlInitializeSampleTimes =========================================
 * Abstract:
 *    This function is used to specify the sample time(s) for your
 *    S-fu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        691  2009-07-09 18:17  S Function-c语言编写s函数模板\C MEX S-function的一般格式.txt

     文件     516278  2009-07-09 12:22  S Function-c语言编写s函数模板\sfundemos命令.bmp

     文件       7047  2002-04-11 08:18  S Function-c语言编写s函数模板\sfuntmpl_basic.c-这是matlab提供的c mex s函数模板.txt

     文件    1008086  2009-07-09 18:10  S Function-c语言编写s函数模板\例1:输出是输入的两倍\model and result.bmp

     文件       4045  2009-07-09 14:03  S Function-c语言编写s函数模板\例1:输出是输入的两倍\timestwo.c-系统自带示例函数.txt

     文件    1539966  2009-07-09 14:07  S Function-c语言编写s函数模板\例1:输出是输入的两倍\编译timestwo.c.bmp

     文件       4833  2009-07-09 17:21  S Function-c语言编写s函数模板\例2:离散系统\dsfunc.c-系统自带,离散demo.txt

     文件     496182  2009-07-09 17:08  S Function-c语言编写s函数模板\例2:离散系统\model.bmp

     文件      57203  2009-07-26 09:52  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\CnComm.h

     文件       6677  2009-07-28 09:01  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\gplCnComm.cpp

     文件      16874  2009-07-28 09:01  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\gpl_com_test_cncomm.mdl

     文件     989398  2009-07-28 09:03  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\matlab界面.bmp

     文件        265  2009-07-26 10:44  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\头文件路径及编译方法.txt

     文件     963742  2009-07-28 09:02  S Function-c语言编写s函数模板\基于C++的S函数编写-第一个程序\接收界面.bmp

     文件       2874  2009-07-09 12:11  S Function-使用m文件创建S函数\sfuntmpl-用m语言写s函数的模板.txt

    ..A.SH.      6656  2009-07-09 09:38  S Function-使用m文件创建S函数\Thumbs.db

     文件    1758294  2009-07-08 21:14  S Function-使用m文件创建S函数\例1:使用matlab自带的s函数.bmp

     文件        758  2009-07-09 12:14  S Function-使用m文件创建S函数\例2:使用s函数实现增益,使得y=3u\gong_compute_gain.txt

     文件    1240854  2009-07-08 21:35  S Function-使用m文件创建S函数\例2:使用s函数实现增益,使得y=3u\model.bmp

    ..A.SH.      8192  2009-07-09 12:14  S Function-使用m文件创建S函数\例2:使用s函数实现增益,使得y=3u\Thumbs.db

     文件       1248  2009-07-08 22:20  S Function-使用m文件创建S函数\例3:使用s函数对单摆系统进行仿真\gong_single_pendulum.txt

     文件      15960  2009-07-08 22:23  S Function-使用m文件创建S函数\例3:使用s函数对单摆系统进行仿真\mys.mdl

     文件     448490  2009-07-08 23:26  S Function-使用m文件创建S函数\例3:使用s函数对单摆系统进行仿真\例3:使用s函数对单摆系统进行仿真.pdf

     文件       1017  2009-07-09 12:12  S Function-使用m文件创建S函数\例4:连续系统\gong_continuous_sys.txt

     文件      17361  2009-07-09 08:49  S Function-使用m文件创建S函数\例4:连续系统\mys.mdl

     文件     302000  2009-07-09 08:50  S Function-使用m文件创建S函数\例4:连续系统\使用s函数设计连续系统模块.pdf

     文件       2660  2009-07-09 09:31  S Function-使用m文件创建S函数\例5:离散系统\dsfunc-是matlab系统的离散s函数模板.txt

     文件       1041  2009-07-09 12:13  S Function-使用m文件创建S函数\例5:离散系统\gong_discrete_sys.txt

     文件      17399  2009-07-09 09:00  S Function-使用m文件创建S函数\例5:离散系统\mys.mdl

     文件     229784  2009-07-09 09:15  S Function-使用m文件创建S函数\例5:离散系统\使用s函数设计离散系统模块.pdf

............此处省略12个文件信息

评论

共有 条评论