ssWriteRTWParamSettings

Записывайте значения нетронутых параметров в model.rtw файл

Синтаксис

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

Аргументы

S

SimStruct, представляющий блок S-Function.

nParamSettings

Количество настроек параметра.

paramType

Тип параметра (см. Parameter Setting Type-Specific Arguments).

settingName

Имя параметра.

...

Остальные аргументы зависят от типа параметра (см. «Аргументы для конкретного типа параметров»).

Возвраты

Система координат int_T (1 или 0) или boolean_T (true или false), указывающий на успех или отказ функции.

Описание

Используйте эту функцию в mdlRTW чтобы записать информацию об установке параметра nontunable в model этой S-функции.rtw файл. Можно также использовать этот макрос, чтобы записать другие постоянные значения, необходимые для генерации кода для этой S-функции.

Аргументы в отношении типа настройки параметра

В этом разделе перечислены аргументы в зависимости от параметра, требуемые для каждого типа параметра.

  • SSWRITE_VALUE_STR(вектор без кавычек): Использование SSWRITE_VALUE_STR для любого отдельного слова вектора символов, которое не начинается с числа или не содержит смешанных символов. В некоторых случаях ssWriteRTWParamSettings заключает вектор символов в кавычки, даже если вы использовали SSWRITE_VALUE_STR. Для примера, если длина вектора символов заставляет соответствующую линию в файле модели переноситься в середине вектора символов, ssWriteRTWParamSettings использует кавычки для поддержания значения вектора символов.

    АргументОписание
    const char_T *valueВектор символов (например USA)
  • SSWRITE_VALUE_QSTR(вектор символов в кавычках): Использование SSWRITE_VALUE_QSTR для любого многословного или смешанного вектора символов или для одиночных векторов символов слов, которые начинаются с числа. Генерация кода с Simulink® Coder™ ошибки продукта, если они начинаются с числа, не заключаются в кавычки.

    АргументОписание
    const char_T *valueВектор символов (например "U.S.A.")
  • SSWRITE_VALUE_VECT_STR (вектор вектора символов): Использование SSWRITE_VALUE_VECT_STR для записи вектора векторов символов с каждым элементом, заключенным в кавычки.

    АргументОписание
    const char_T *valueВектор векторов символов (например ["USA", "Mexico"])
    int_T nItemsInVectРазмер вектора
  • SSWRITE_VALUE_NUM (число): Использование SSWRITE_VALUE_NUM для записи действительного значения с плавающей точкой.

    АргументОписание
    const real_T valueЧисло (например 2)
  • SSWRITE_VALUE_VECT (вектор чисел): Использование SSWRITE_VALUE_VECT в вектор значений с плавающей точкой записи.

    АргументОписание
    const real_T *valueВектор чисел (например [300, 100])
    int_T vectLenРазмер вектора
  • SSWRITE_VALUE_2DMAT (матрица чисел): Использование SSWRITE_VALUE_2DMAT для записи вещественной, с плавающей точкой 2-D матрицы значений.

    АргументОписание
    const real_T *valueМатрица чисел (например,
    [[170, 130],[60, 40]])
    int_T nRowsКоличество строк в матрице
    int_T nColsКоличество столбцов в матрице
  • SSWRITE_VALUE_DTYPE_NUM (номер с типом данных): Использование SSWRITE_VALUE_DTYPE_NUM для записи комплексного числа в формате Simulink или с типом данных, отличным от double.

    АргументОписание
    const void *valueЧисло (например [3+4i])
    int_T dtInfoТип данных (см. раздел «Определение типа данных»)
  • SSWRITE_VALUE_DTYPE_VECT (вектор с типом данных): Использование SSWRITE_VALUE_DTYPE_VECT для записи комплексного вектора значений в формате Simulink или с типом данных, отличным от double.

    АргументОписание
    const void *valueВектор с типом данных (например [1+2i, 3+4i])
    int_T vectLenРазмер вектора
    int_T dtInfoТип данных (см. раздел «Определение типа данных»)
  • SSWRITE_VALUE_DTYPE_2DMAT (матрица с типом данных): Использование SSWRITE_VALUE_DTYPE_2DMAT для записи сложной 2-D матрицы значений в формате Simulink или с типом данных, отличным от double.

    АргументОписание
    const void *valueМатрица (например [1+2i 3+4i; 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 позволяет вам задать тип данных для вектора.

    АргументОписание
    const void *RValueДействительный компонент вектора (например [1 3])
    const void *IValueМнимый компонент вектора
    (например, [2 5])
    int_T vectLenКоличество элементов в векторе
    int_T dtInfoТип данных (см. раздел «Определение типа данных»)
  • SSWRITE_VALUE_DTYPE_ML_2DMAT(матрица MATLAB с типом данных): Использование SSWRITE_VALUE_DTYPE_ML_2DMAT записать действительную и мнимую части комплексной 2-D матрицы значений как отдельные матрицы. SSWRITE_VALUE_DTYPE_ML_2DMAT позволяет вам задать тип данных для значений.

    АргументОписание
    const void *RValueДействительный компонент матрицы
    (например, [1 5 3 6])
    const void *IValueМнимый компонент матрицы
    (например, [2 0 4 0])
    int_T nRowsКоличество строк в матрице
    int_T nColsКоличество столбцов в матрице
    int_T dtInfoТип данных (см. раздел «Определение типа данных»)

Языки

C, C++

Пример

Смотрите S-функцию sfun_frmad.c используется в sfcndemo_frame для полного примера, который использует эту функцию. Для выполнения этой модели требуется лицензия DSP System Toolbox™.

Эта S-функция начинается со следующих объявлений переменных, сопоставленных с параметрами S-функции.

/* Parameters */
enum {FCN_ARGC = 0, AMP_ARGC,     FREQ_ARGC,     TS_ARGC, 
      FRMSIZE_ARGC, NOISAMP_ARGC, NOISFREQ_ARGC, NUM_ARGS};

#define FCN_ARG(S)      (ssGetSFcnParam(S,FCN_ARGC))
#define AMP_ARG(S)      (ssGetSFcnParam(S,AMP_ARGC))
#define FREQ_ARG(S)     (ssGetSFcnParam(S,FREQ_ARGC))
#define TS_ARG(S)       (ssGetSFcnParam(S,TS_ARGC))
#define FRMSIZE_ARG(S)  (ssGetSFcnParam(S,FRMSIZE_ARGC))
#define NOISAMP_ARG(S)  (ssGetSFcnParam(S,NOISAMP_ARGC))
#define NOISFREQ_ARG(S) (ssGetSFcnParam(S,NOISFREQ_ARGC))

#define GET_FRMSIZE(S)  (mxGetPr(FRMSIZE_ARG(S)))[0]

Функции S mdlRTW затем функция использует ssWriteRTWParamSettings чтобы записать параметры S-функции в model.rtw файл.

real_T  noisA = mxGetPr(NOISAMP_ARG(S))[0];
real_T  noisF = mxGetPr(NOISFREQ_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];

if (!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; /* An error occurred. */
    }

Когда код генерируется для модели, продукт Simulink Coder впервые записывает структуру с именем SFcnParamSettings на model.rtw файл на основе информации, представленной в mdlRTW S-функции способ. В этом примере получившееся SFcnParamSettings является:

SFcnParamSettings {
	Function  Sine
	Ts        0.005
	FrameSize 64
	NoiseAmp  4.0
	NoiseFreq 80.0
      }

Файл компилятора целевого языка S-функции sfun_frmad.tlc затем обращается к параметрам S-функции с помощью имен переменных в SFcnParamSettings структура. Для примера:

%assign fnName   = SFcnParamSettings.Function
%assign frmSize  = SFcnParamSettings.FrameSize
%assign ts       = SFcnParamSettings.Ts
%assign noisA    = SFcnParamSettings.NoiseAmp
%assign noisF    = SFcnParamSettings.NoiseFreq

См. также

mdlRTW

Представлено до R2006a