exponenta event banner

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

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. Несмотря на то, что параметр Inline имеет значение Yes, параметр должен быть помещен в память (ОЗУ), поскольку доступ к нему осуществляется внутри 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 в оперативной памяти вместо встраивания.

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

Посмотрите LibBlockParameterAddr в paramlib.tlc.

LibBlockParameterBaseAddr

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

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

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

Посмотрите LibBlockParameterBaseAddr в paramlib.tlc.

LibBlockParameterDataTypeId

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

Посмотрите 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.

Связанные темы