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

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 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

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, рассмотрите преобразование параметра из Tunable в Nontunable. Затем используйте ssWriteRTWParamSettings, чтобы записать значение параметра в model.rtw файл. Входные параметры уменьшают использование ОЗУ, потому что генератор кода использует числовые значения параметров, вместо их символьных имен, в сгенерированном коде.

См. LibBlockParameterString в paramlib.tlc.

LibBlockParameterValue

На основе параметров блоков ссылки (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

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

См. LibBlockParameterWidth в paramlib.tlc.

Похожие темы