Функции параметра

LibBlockMatrixParameter

LibBlockMatrixParameter(param, rucv, rlcv, ridx, cucv, clcv, cidx) возвращает параметр матрицы для блока, учитывая переменные контроля за работой пользователей строки и столбца (rucv, cucv), контрольные переменные цикла (rlcv, clcv), и индексы (ridx, cidx). Обычно блоки должны использовать LibBlockParameter. Если у вас есть параметр матрицы, необходимо записать его как главный столбцом вектор и получить доступ к нему через LibBlockParameter.

Примечание

Прокрутка цикла в настоящее время не поддержана и сгенерирует ошибку, если требуется (т.е. если или rlcv или clcv не равны "").

Индексные аргументы строки и столбца подобны аргументам для LibBlockParameter. Индекс столбца (cidx) перегружается, чтобы обработать комплексные числа.

Смотрите LibBlockMatrixParameter в paramlib.tlc.

LibBlockMatrixParameterAddr

LibBlockMatrixParameterAddr(param, rucv, rlcv, ridx, cucv, clcv, cidx) возвращает адрес параметра матрицы.

Примечание

LibBlockMatrixParameterAddr возвращает адрес параметра матрицы. Прокрутка цикла не поддержана (т.е. rlcv, и clcv должен оба быть пустой строкой).

Смотрите LibBlockMatrixParameterAddr в paramlib.tlc.

LibBlockMatrixParameterBaseAddr

LibBlockMatrixParameterBaseAddr(param) возвращает базовый адрес параметра матрицы.

Смотрите LibBlockMatrixParameterBaseAddr в paramlib.tlc.

LibBlockParamSetting

LibBlockParamSetting(bType, psType) возвращает строку заданной установки параметра для заданного типа блока. Если вы передадите пустой тип блока в эту функцию, установка параметра будет принята, чтобы быть в записи ParamSettings блока. Если непустой тип блока будет передан в функцию, установки параметров будут приняты, чтобы быть в записи %<Btype>ParamSettings того блока.

Смотрите LibBlockParamSetting в paramlib.tlc.

LibBlockParameter

На основе ссылки параметра (param), переменная контроля за работой пользователей (ucv), контрольная переменная цикла (lcv), индекс сигнала (sigIdx) и состояние встраивания параметра, LibBlockParameter(param, ucv, lcv, sigIdx) возвращает ссылку на параметры блоков. Возвращенным значением является допустимый rvalue (значение правой стороны для выражения). Например,

СлучайВызов функцииМожет произвести

1

LibBlockParameter(Gain, "i", lcv, sigIdx)rtP.blockname[i]

2

LibBlockParameter(Gain, "i", lcv, sigIdx)rtP.blockname

3

LibBlockParameter(Gain, "", lcv, sigIdx)p_Gain[i]

4

LibBlockParameter(Gain, "", lcv, sigIdx) p_Gain

5

LibBlockParameter(Gain, "", lcv, sigIdx)4.55

6

LibBlockParameter(Gain, "", lcv, sigIdx)rtP.blockname.re

7

LibBlockParameter(Gain, "", lcv, sigIdx)rtP.blockname.im

Чтобы проиллюстрировать основные работы LibBlockParameter, примите некомплексный векторный сигнал где Gain[0]=4.55:

LibBlockParameter(Gain, "", "i", 0)
СлучайПрокруткаВстроенный параметрВводРезультатТребуемый в памяти

1

0

Да

Скаляр

4.55

Нет

2

1

Да

Скаляр

4.55

Нет

3

0

Да

Вектор

4.55

Нет

4

1

Да

Вектор

p_Gain[i]

Да

5

0

Нет

Скаляр

rtP.blk.Gain

Нет

6

0

Нет

Скаляр

rtP.blk.Gain

Нет

7

0

Нет

Вектор

rtP.blk.prm[0]

Нет

8

0

Нет

Вектор

p.Gain[i]

Да

Отметьте Случай 4. Даже при том, что Встроенный Параметр Да, параметр должен быть помещен в память (RAM), потому что к этому получают доступ в цикле for.

Примечание

LibBlockParameter также поддерживает выражения, когда используется со встроенными параметрами и настройкой параметра.

Например, если бы поле параметра имело выражение MATLAB® '2*a', то LibBlockParameter возвратил бы выражение C '(2*a)'. Список функций, поддерживаемых LibBlockParameter, определяется функциями FcnConvertNodeToExpr и FcnConvertIdToFcn. Чтобы улучшить функциональность, увеличьтесь или обновить любую из этих функций.

Обратите внимание на то, что определенные типы выражений не поддержаны, такие как x*y, где и x и y являются нескалярными выражениями.

См. документацию о настраиваемых параметрах для получения дополнительной информации о точных функциях и синтаксисе, которые поддерживаются.

Предупреждение

Не используйте LibBlockParameter, чтобы получить доступ к адресу параметра, или вы можете, может ошибочно сослаться на номер (т.е. &4.55), когда параметр встраивается. Можно избежать этой ситуации при помощи LibBlockParameterAddr.

Смотрите LibBlockParameter в paramlib.tlc.

LibBlockParameterAddr

LibBlockParameterAddr(param, ucv, lcv, idx) возвращает адрес параметров блоков.

Используя LibBlockParameterAddr, чтобы получить доступ к параметру, когда глобальная переменная InlineParams будет равна 1, заставит переменную быть объявленной const в RAM вместо того, чтобы быть встроенным.

Доступ к адресу выражения, когда выражение будет иметь несколько настраиваемых/прокрученных переменных в нем, приведет к ошибке.

Смотрите LibBlockParameterAddr в paramlib.tlc.

LibBlockParameterBaseAddr

LibBlockParameterBaseAddr(param) возвращает базовый адрес параметров блоков.

Используя LibBlockParameterBaseAddr, чтобы получить доступ к параметру, когда глобальная переменная InlineParams будет равна, каждый заставит переменную быть объявленной const в RAM вместо того, чтобы быть встроенным.

Доступ к адресу выражения, когда выражение будет иметь несколько настраиваемых/прокрученных переменных в нем, приведет к ошибке.

Смотрите LibBlockParameterBaseAddr в paramlib.tlc.

LibBlockParameterDataTypeId

LibBlockParameterDataTypeId(param) возвращает числовой ID, соответствующий типу данных заданных параметров блоков.

Смотрите LibBlockParameterDataTypeId в paramlib.tlc.

LibBlockParameterDataTypeName

LibBlockParameterDataTypeName(param, reim) возвращает имя типа данных, соответствующего заданным параметрам блоков.

Смотрите LibBlockParameterDataTypeName в paramlib.tlc.

LibBlockParameterDimensions

LibBlockParameterDimensions(param) возвращает вектор - строку из длины N (где N >= 1) предоставление размерностей данных о параметре.

Например,

%assign dims  = LibBlockParameterDimensions("paramName")
%assign nDims = SIZE(dims,1)
%foreach i=nDims
   /* Dimension %<i+1> = %<dims[i]> */
%endforeach

LibBlockParameterDimensions отличается от LibBlockParameterSize, в котором он возвращает размерности данных о параметре до сворачивания параметра Matrix к главному столбцом вектору. Сворачивание происходит для параметров периода выполнения, которые задали их поле outputAsMatrix как False.

Смотрите LibBlockParameterDimensions в paramlib.tlc.

LibBlockParameterIsComplex

LibBlockParameterIsComplex(param) возвращается 1, если заданные параметры блоков являются комплексными, 0 в противном случае.

Смотрите LibBlockParameterIsComplex в paramlib.tlc.

LibBlockParameterSize

LibBlockParameterSize(param) возвращает вектор размера 2 в формате [nRows, nCols], где nRows является количеством строк, и nCols является количеством столбцов.

Смотрите LibBlockParameterSize в paramlib.tlc.

LibBlockParameterString

На основе ссылки параметров блоков (param) LibBlockParameterString(param) возвращает заданные параметры блоков, интерпретированные как строка, например, эта функция возвращается:

  • STRINGOF(param.Value[0]), если параметр является матрицей строки

  • STRINGOF(param.Value) в противном случае

Примечание

Это - ошибка вызвать эту функцию с параметром с матричным знаком больше чем с одной строкой.

Если вы только получаете доступ к значению параметров с помощью LibBlockParameterValue или LibBlockParameterString, рассматриваете преобразование параметра от Настраиваемого до Ненастраиваемого. Затем используйте ssWriteRTWParamSettings, чтобы записать значение параметра к файлу model.rtw. Встраивание параметров уменьшает Использование оперативной памяти, потому что генератор кода использует численные значения параметров, вместо их символьных имен, в сгенерированном коде.

Смотрите LibBlockParameterString в paramlib.tlc.

LibBlockParameterValue

На основе ссылки параметров блоков (param) и индексный элемент массива (elidx), LibBlockParameterValue(param, elIdx) возвращает числовое значение параметра. Можно использовать функцию LibBlockParameterWidth(param), чтобы получить ширину массива и затем использовать elidx (допустимые значения 0 к width-1), чтобы получить конкретный элемент массива.

Если вы только получаете доступ к значению параметров с помощью LibBlockParameterValue или LibBlockParameterString, рассматриваете преобразование параметра от Настраиваемого до Ненастраиваемого. Затем используйте ssWriteRTWParamSettings, чтобы записать значение параметра к файлу model.rtw. Встраивание параметров уменьшает Использование оперативной памяти, потому что генератор кода использует численные значения параметров, вместо их символьных имен, в сгенерированном коде.

Пример

Если вы хотите сгенерировать код для различного интегратора в зависимости от параметра для блока, можно использовать следующее:

%assign mode = LibBlockParameterValue(Integrator, 0)
%switch (mode)
   %case 1
      %<CodeForIntegrator1>
      %break
   %case 2
      %<CodeForIntegrator2>
      %break
   %default
      Error: Unrecognized integrator value.
      %break
%endswitch

Смотрите LibBlockParameterValue в paramlib.tlc.

LibBlockParameterWidth

LibBlockParameterWidth(param) возвращает число элементов (ширина) параметра.

Смотрите LibBlockParameterWidth в paramlib.tlc.

Похожие темы