LibBlockMatrixParameter(param, rucv, rlcv, ridx, cucv, clcv, cidx)
возвращает параметр матрицы для блока, учитывая переменные контроля за работой пользователей строки и столбца (rucv
, cucv
), контрольные переменные цикла (rlcv
, clcv
), и индексы (ridx
, cidx
). Обычно блоки должны использовать LibBlockParameter
. Если у вас есть параметр матрицы, необходимо записать его как главный столбцом вектор и получить доступ к нему через LibBlockParameter
.
Прокрутка цикла в настоящее время не поддержана и сгенерирует ошибку, если требуется (т.е. если или rlcv
или clcv
не равны ""
).
Индексные аргументы строки и столбца подобны аргументам для LibBlockParameter
. Индекс столбца (cidx
) перегружается, чтобы обработать комплексные числа.
Смотрите LibBlockMatrixParameter
в paramlib.tlc
.
LibBlockMatrixParameterAddr(param, rucv, rlcv, ridx, cucv, clcv, cidx)
возвращает адрес параметра матрицы.
LibBlockMatrixParameterAddr
возвращает адрес параметра матрицы. Прокрутка цикла не поддержана (т.е. rlcv
, и clcv
должен оба быть пустой строкой).
Смотрите LibBlockMatrixParameterAddr
в paramlib.tlc
.
LibBlockMatrixParameterBaseAddr(param)
возвращает базовый адрес параметра матрицы.
Смотрите LibBlockMatrixParameterBaseAddr
в paramlib.tlc
.
LibBlockParamSetting(bType, psType)
возвращает строку заданной установки параметра для заданного типа блока. Если вы передадите пустой тип блока в эту функцию, установка параметра будет принята, чтобы быть в записи ParamSettings
блока. Если непустой тип блока будет передан в функцию, установки параметров будут приняты, чтобы быть в записи %<Btype>ParamSettings
того блока.
Смотрите LibBlockParamSetting
в paramlib.tlc
.
На основе ссылки параметра (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(param, ucv, lcv, idx)
возвращает адрес параметров блоков.
Используя LibBlockParameterAddr
, чтобы получить доступ к параметру, когда глобальная переменная InlineParams
будет равна 1, заставит переменную быть объявленной const
в RAM вместо того, чтобы быть встроенным.
Доступ к адресу выражения, когда выражение будет иметь несколько настраиваемых/прокрученных переменных в нем, приведет к ошибке.
Смотрите LibBlockParameterAddr
в paramlib.tlc
.
LibBlockParameterBaseAddr(param)
возвращает базовый адрес параметров блоков.
Используя LibBlockParameterBaseAddr
, чтобы получить доступ к параметру, когда глобальная переменная InlineParams
будет равна, каждый заставит переменную быть объявленной const
в RAM вместо того, чтобы быть встроенным.
Доступ к адресу выражения, когда выражение будет иметь несколько настраиваемых/прокрученных переменных в нем, приведет к ошибке.
Смотрите LibBlockParameterBaseAddr
в paramlib.tlc
.
LibBlockParameterDataTypeId(param)
возвращает числовой ID, соответствующий типу данных заданных параметров блоков.
Смотрите LibBlockParameterDataTypeId
в paramlib.tlc
.
LibBlockParameterDataTypeName(param, reim)
возвращает имя типа данных, соответствующего заданным параметрам блоков.
Смотрите LibBlockParameterDataTypeName
в paramlib.tlc
.
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(param)
возвращается 1, если заданные параметры блоков являются комплексными, 0 в противном случае.
Смотрите LibBlockParameterIsComplex
в paramlib.tlc
.
LibBlockParameterSize(param)
возвращает вектор размера 2 в формате [nRows, nCols]
, где nRows
является количеством строк, и nCols
является количеством столбцов.
Смотрите LibBlockParameterSize
в paramlib.tlc
.
На основе ссылки параметров блоков (param
) LibBlockParameterString(param)
возвращает заданные параметры блоков, интерпретированные как строка, например, эта функция возвращается:
STRINGOF(param.Value[0])
, если параметр является матрицей строки
STRINGOF(param.Value)
в противном случае
Это - ошибка вызвать эту функцию с параметром с матричным знаком больше чем с одной строкой.
Если вы только получаете доступ к значению параметров с помощью LibBlockParameterValue
или LibBlockParameterString
, рассматриваете преобразование параметра от Настраиваемого до Ненастраиваемого. Затем используйте ssWriteRTWParamSettings
, чтобы записать значение параметра к файлу
. Встраивание параметров уменьшает Использование оперативной памяти, потому что генератор кода использует численные значения параметров, вместо их символьных имен, в сгенерированном коде.model.rtw
Смотрите LibBlockParameterString
в paramlib.tlc
.
На основе ссылки параметров блоков (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(param)
возвращает число элементов (ширина) параметра.
Смотрите LibBlockParameterWidth
в
.paramlib.tlc