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. Несмотря на то, что Inline Parameter является Yes, параметр должен быть помещен в память (ОЗУ), потому что доступ к нему осуществляется внутри for
цикл.
Примечание
LibBlockParameter
также поддерживает выражения при использовании с inlined параметрами и настройкой параметра.
Для примера, если поле параметра имело 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
в ОЗУ вместо встраивания.
Доступ к адресу выражения, когда выражение имеет в нем несколько настраиваемых/накатываемых переменных, приведет к ошибке.
См. LibBlockParameterAddr
в paramlib.tlc
.
LibBlockParameterBaseAddr(param)
возвращает базовый адрес параметров блоков.
Использование LibBlockParameterBaseAddr
для доступа к параметру, когда глобальный InlineParams
переменная, равная единице, приведет к объявлению переменной const
в ОЗУ вместо встраивания.
Доступ к адресу выражения, когда выражение имеет в нем несколько настраиваемых/накатываемых переменных, приведет к ошибке.
См. LibBlockParameterBaseAddr
в paramlib.tlc
.
LibBlockParameterDataTypeId(param)
возвращает числовой идентификатор, соответствующий типу данных заданных параметров блоков.
См. 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
, рассмотрите преобразование параметра из Tunable в Nontunable. Затем используйте ssWriteRTWParamSettings, чтобы записать значение параметра в
файл. Входные параметры уменьшают использование ОЗУ, потому что генератор кода использует числовые значения параметров, вместо их символьных имен, в сгенерированном коде.model
.rtw
См. LibBlockParameterString
в paramlib.tlc
.
На основе параметров блоков ссылки (param
) и элемент индекса массива (elidx
), LibBlockParameterValue(param, elIdx)
возвращает числовое значение параметра. Можно использовать LibBlockParameterWidth(param)
функция для получения ширины массива и последующего использования elidx
(допустимые значения 0
на width-1
), чтобы получить конкретный элемент массива.
Если вы получаете доступ только к значению параметров с помощью LibBlockParameterValue
или LibBlockParameterString
, рассмотрите преобразование параметра из Tunable в Nontunable. Затем используйте 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