getOutputIndex

Получите индекс выходного элемента спецификации рабочей точки

Описание

Outputs свойство спецификации рабочей точки является массивом, который содержит технические требования обрезки для каждого выхода модели. Когда определение отображения функционирует для индивидуально настраиваемой обрезки Simulink® модели, можно использовать getOutputIndex получить индекс выходной спецификации на основе соответствующего блока path.

При обрезке моделей Simulink с помощью основанного на оптимизации поиска некоторые приложения требуют дополнительной гибкости в определении параметров поиска оптимизации. Для таких систем можно задать пользовательские ограничения и пользовательскую целевую функцию. Для сложных моделей можно задать отображение, которое выбирает подмножество состояний модели, входных параметров и выходных параметров, чтобы передать пользовательскому ограничению и целевым функциям. Для получения дополнительной информации смотрите, Вычисляют Рабочие точки Используя Пользовательские Ограничения и Целевые функции.

пример

index = getOutputIndex(op,block) возвращает индекс выходной спецификации, которая соответствует block в Outputs свойство спецификации рабочей точки op.

пример

index = getOutputIndex(op,block,port) возвращает индекс выходной спецификации, которая соответствует выходному ограничению для обрезки, добавленному к заданному выходу port из заданного block.

Используйте этот синтаксис когда Outputs свойство op содержит выходные ограничения для обрезки больше чем для одного сигнала, происходящего из того же блока.

пример

index = getOutputIndex(op,block,port,element) возвращает индекс заданного element в рамках выходной спецификации для выхода с несколькими элементами.

Примеры

свернуть все

Открытая модель Simulink.

mdl = 'scdindex1';
open_system(mdl)

Создайте спецификацию рабочей точки для модели.

opspec = operspec(mdl);

opspec содержит массив выходных технических требований для модели.

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdindex1/Out1
    0    false    -Inf    Inf
(2.) scdindex1/Out2
    0    false    -Inf    Inf

Получите индекс выходной спецификации для Out2.

idx = getOutputIndex(opspec,'scdindex1/Out2')
idx =

     2     1

Первый столбец idx содержит индекс выходной спецификации в opspec.Outputs. Второй столбец содержит индекс элемента в рамках выходной спецификации. В этом случае в выходной спецификации существует только один элемент.

Открытая модель Simulink.

mdl = 'scdplane';
open_system(mdl)

Создайте спецификацию рабочей точки для модели.

opspec = operspec(mdl);

В дополнение к корневому уровню выходные параметры модели, opspec.Outputs массив содержит технические требования для ограничений для обрезки, добавленных к сигналам с помощью addoutputspec команда.

Добавьте выходную спецификацию в сигнал, происходящий из второго выходного порта блока Model Динамики Самолета.

opspec = addoutputspec(opspec,'scdplane/Aircraft Dynamics Model',2);

Просмотрите выходной массив opspec.

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdplane/alpha (rad)
    0    false    -Inf    Inf
(2.) scdplane/Nz Pilot (g)
    0    false    -Inf    Inf
(3.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf

Получите индекс добавленной выходной спецификации. Когда существует выходная спецификация для только одного из выходных портов данного блока, вы не должны задавать номер порта, чтобы получить выходной индекс.

index1 = getOutputIndex(opspec,'scdplane/Aircraft Dynamics Model')
index1 =

     3     1

Добавьте выходную спецификацию в сигнал, происходящий из первого выхода того же блока.

opspec = addoutputspec(opspec,'scdplane/Aircraft Dynamics Model',1);

Просмотрите выходной массив opspec.

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdplane/alpha (rad)
    0    false    -Inf    Inf
(2.) scdplane/Nz Pilot (g)
    0    false    -Inf    Inf
(3.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf
(4.) scdplane/Aircraft Dynamics Model
    0    false    -Inf    Inf

Существует теперь два выходных технических требований, которые соответствуют тому же блоку, один для каждого выходного порта. Получите индекс для выходной спецификации, которая соответствует выходному порту 1 из блока Model Динамики Самолета.

index2 = getOutputIndex(opspec,'scdplane/Aircraft Dynamics Model',1)
index2 =

     4     1

Открытая модель Simulink.

mdl = 'scdtmp';
open_system(mdl)

Создайте объект спецификации рабочей точки для модели.

opspec = operspec(mdl);

opspec содержит выходную спецификацию для выходного порта Out1, который является векторным сигналом.

opspec.Outputs
ans = 

    <strong>y</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdtmp/Out1
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf
    0    false    -Inf    Inf

Получите индексы всех элементов Out1.

index1 = getOutputIndex(opspec,'scdtmp/Out1')
index1 =

     1     1
     1     2
     1     3
     1     4
     1     5
     1     6

Каждая строка index1 содержит индекс для одного элемента векторного сигнала в Out1. Первый столбец является индексом выходного объекта спецификации для порта Out1 в opsepc.Outputs. Второй столбец является индексом элемента в рамках выходной спецификации.

Можно также получить индекс для отдельных элементов выходной спецификации или подмножества элементов. Получите индекс номера элемента 4 из Out1.

index2 = getOutputIndex(opspec,'scdtmp/Out1',[],4)
index2 =

     1     4

Получите индексы элементов 2 и 3 из Out1.

index3 = getOutputIndex(opspec,'scdtmp/Out1',[],[2 3])
index3 =

     1     2
     1     3

Входные параметры

свернуть все

Спецификация рабочей точки для модели Simulink в виде OperatingSpec или OperatingReport.

Блок path, который соответствует выходной спецификации в Outputs свойство opВ виде вектора символов или строки, которая содержит путь одного из следующего:

  • Корневой уровень выход модели.

  • Исходный блок для сигнала в модели, к которой была добавлена выходная спецификация. Для получения дополнительной информации о добавлении выходных технических требований к модели смотрите addoutputspec.

Чтобы видеть все блоки, которые вывели технические требования, просмотрите Outputs свойство op.

op.Outputs

Выходной порт в виде целого числа в области значений [1,N], где N количество выходных портов на заданном block. Если block выходной порт корневого уровня, затем N 1.

Если вы не задаете port, и существует одна запись в выходном массиве op это соответствует заданному block, затем значение по умолчанию port номер порта той записи. Если существуют многократные въезды в выходном массиве, которые соответствуют заданному block, затем значение по умолчанию port номер порта первой записи. Для примера смотрите, Заставляют индекс Выходной Спецификации Для обрезки, Добавленной Сигнализировать.

Просмотреть номер порта iзапись th в выходном массиве opВвод:

op.Outputs(i).PortNumber

Выведите индекс элемента в виде положительного целого числа, меньше чем или равного порту width выхода заданного block, или вектор из таких целых чисел. По умолчанию, если вы не задаете element, getOutputIndex возвращает индексы всех элементов в выбранной выходной спецификации. Для примера смотрите, Получают Выходные индексы для Выходной Спецификации с Несколькими Элементами.

Выходные аргументы

свернуть все

Выведите индекс, возвращенный как вектор-строка с 2 элементами когда element целое число или массив с 2 столбцами когда element вектор. Каждая строка index содержит индекс для одного выходного элемента.

Первый столбец index содержит индекс соответствующей выходной спецификации в Outputs свойство op. Второй столбец содержит индекс элемента в рамках выходной спецификации.

Используя index, можно задать выходной фрагмент пользовательского отображения для индивидуально настраиваемой обрезки моделей Simulink. Для получения дополнительной информации смотрите CustomMappingFcn свойство operspec.

Введенный в R2017a