主要内容

ssWriteRTWParamSettings

将不可调优参数的值写入模型.rtw文件

语法

int_T ssWriteRTWParamSettings(SimStruct *S, int_T nParamSettings, int_T paramType, const char_T *settingName,…)

参数

年代

表示s -功能块的SimStruct。

nParamSettings

参数设置个数。

paramType

参数的类型(参见参数设置类型特定的参数).

settingName

参数名称。

...

其余实参取决于形参类型(参见参数设置类型特定的参数).

返回

一个int_T10)或boolean_T真正的),指示该函数的成功或失败。

描述

使用此函数mdlRTW将不可调优参数设置信息写入s函数模型.rtw文件。还可以使用这个宏写出为这个s函数生成代码所需的其他常量值。

参数设置类型特定的参数

本节列出每个形参类型所需的形参特定的实参。

  • SSWRITE_VALUE_STR(未加引号的字符向量):使用SSWRITE_VALUE_STR用于不以数字开头或不包含混合字符的任何单字字符向量。在某些情况下,ssWriteRTWParamSettings将字符向量括在引号中,即使您使用了SSWRITE_VALUE_STR.例如,如果字符向量的长度导致模型文件中相应的行换行到字符向量的中间,ssWriteRTWParamSettings使用引号来维护字符向量的值。

    论点 描述
    const char_T *价值 特征向量(例如,美国
  • SSWRITE_VALUE_QSTR(带引号的字符向量):使用SSWRITE_VALUE_QSTR对于任何多字或混合字符向量,或以数字开头的单个字字符向量。使用金宝app®编码器™如果任何以数字开头的产品没有用引号括起来,产品错误将被排除。

    论点 描述
    const char_T *价值 特征向量(例如,“美国”
  • SSWRITE_VALUE_VECT_STR(字符向量):使用SSWRITE_VALUE_VECT_STR编写一个由字符向量组成的向量,每个元素用双引号括起来。

    论点 描述
    const char_T *价值 字符向量的向量(例如,(“美国”、“墨西哥”)
    int_T nItemsInVect 向量的大小
  • SSWRITE_VALUE_NUM(数量):使用SSWRITE_VALUE_NUM写入实浮点值。

    论点 描述
    const real_T价值 数量(例如,2
  • SSWRITE_VALUE_VECT(数字向量):使用SSWRITE_VALUE_VECT写入实数浮点值向量。

    论点 描述
    const real_T *价值 数字向量(例如,(300、100)
    int_T vectLen 向量的大小
  • SSWRITE_VALUE_2DMAT(数字矩阵):使用SSWRITE_VALUE_2DMAT写一个实数浮点二维值矩阵。

    论点 描述
    const real_T *价值 数字矩阵(例如,
    [[170年、130年],[60,40]]
    int_T nRows 矩阵的行数
    int_T nCols 矩阵的列数
  • SSWRITE_VALUE_DTYPE_NUM(数据类型):使用SSWRITE_VALUE_DTYPE_NUM以Simulink格式或使用非double的数据类型编写金宝app复杂值。

    论点 描述
    const void *价值 数量(例如,(3 + 4)
    int_T dtInfo 数据类型(见指定数据类型信息
  • SSWRITE_VALUE_DTYPE_VECT(数据类型的向量):使用SSWRITE_VALUE_DTYPE_VECT以Simulink格式或使用非double数据类型编写复杂值向量。金宝app

    论点 描述
    const void *价值 矢量数据类型(例如,我3 + 4 (1 + 2)
    int_T vectLen 向量的大小
    int_T dtInfo 数据类型(见指定数据类型信息
  • SSWRITE_VALUE_DTYPE_2DMAT(数据类型矩阵):使用SSWRITE_VALUE_DTYPE_2DMAT用Simulink格式或非double数据类型编写复杂的二维矩阵。金宝app

    论点 描述
    const void *价值 矩阵(例如,[1 + 2我3 + 4;5 6]
    int_T nRows 矩阵的行数
    int_T nCols 矩阵的列数
    int_T dtInfo 数据类型(见指定数据类型信息
  • SSWRITE_VALUE_DTYPE_ML_VECTOR(数据类型MATLAB®向量):使用SSWRITE_VALUE_DTYPE_ML_VECTOR将复数向量的实部和虚部写成单独的数组。SSWRITE_VALUE_DTYPE_ML_VECTOR允许指定vector的数据类型。

    论点 描述
    const void *右值 向量的实分量(例如,3 [1]
    const void * IValue 向量的虚分量
    (例如,(2 - 5)
    int_T vectLen 向量中元素的个数
    int_T dtInfo 数据类型(见指定数据类型信息
  • SSWRITE_VALUE_DTYPE_ML_2DMAT(数据类型MATLAB矩阵):使用SSWRITE_VALUE_DTYPE_ML_2DMAT将一个复二维矩阵的实部和虚部写成独立的矩阵。SSWRITE_VALUE_DTYPE_ML_2DMAT允许您为值指定数据类型。

    论点 描述
    const void *右值 矩阵的实分量
    (例如,[1 5 3 6]
    const void * IValue 矩阵的虚分量
    (例如,[2 0 4 0]
    int_T nRows 矩阵的行数
    int_T nCols 矩阵的列数
    int_T dtInfo 数据类型(见指定数据类型信息

语言

C, c++

例子

看到这个功能sfun_frmad.c中使用的sfcndemo_frame下面是使用此函数的完整示例。运行此模型需要DSP系统工具箱™许可证。

这个s函数以下列与s函数参数相关联的变量声明开始。

/*参数*/ enum {FCN_ARGC = 0, AMP_ARGC, FREQ_ARGC, TS_ARGC, FRMSIZE_ARGC, NOISAMP_ARGC, NOISFREQ_ARGC, NUM_ARGS};#define FREQ_ARG(S) (ssGetSFcnParam(S,AMP_ARGC)) #define FREQ_ARG(S) (ssGetSFcnParam(S,AMP_ARGC)) #define FRMSIZE_ARG(S) (ssGetSFcnParam(S,AMP_ARGC)) #define noise (S)(ssGetSFcnParam(S,NOISFREQ_ARGC)) #define GET_FRMSIZE(S) (mxGetPr(FRMSIZE_ARG(S)))[0]

功能的mdlRTW然后使用函数ssWriteRTWParamSettings将s函数参数写到模型.rtw文件。

real_T noisA = mxGetPr(NOISAMP_ARG(S))[0]; / /输出real_T noise f = mxGetPr(noise freq_arg (S))[0];real_T ts = mxGetPr(TS_ARG(S))[0];int_T fcn = (int) (mxGetPr(FCN_ARG(S))[0]);int32_T fsize = mxGetPr(FRMSIZE_ARG(S))[0];如果(!ssWriteRTWParamSettings(S, 5, SSWRITE_VALUE_STR, "Function", (fcn == 1) ?"Constant": "Sine", SSWRITE_VALUE_NUM, "Ts", Ts, SSWRITE_VALUE_DTYPE_NUM, "FrameSize", &fsize, DTINFO(SS_INT32, COMPLEX_NO), SSWRITE_VALUE_NUM, "NoiseAmp", noisA, SSWRITE_VALUE_NUM, "NoiseFreq", noisF)) {return;/*发生错误。* /}

当为模型生成代码时,金宝app仿真软件编码器Product首先编写一个名为SFcnParamSettings模型.rtw文件基于S-function提供的信息mdlRTW方法。在这个例子中,结果是SFcnParamSettings是:

sfcnparameters settings {Function sints 0.005 FrameSize 64 NoiseAmp 4.0 NoiseFreq 80.0}

s函数的目标语言编译器文件sfun_frmad.tlc的变量名访问s函数参数SFcnParamSettings结构。例如:

%assign fnName = SFcnParamSettings。函数%assign frmSize = SFcnParamSettings。FrameSize %assign ts = SFcnParamSettings。Ts %assign noisA = SFcnParamSettings。NoiseAmp %assign noisF = SFcnParamSettings。NoiseFreq

另请参阅

mdlRTW

之前介绍过的R2006a