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]> */
%endforeachLibBlockParameterDimensions отличается от 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