getOutputIndex

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

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

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

Синтаксис

index = getOutputIndex(op,block)
index = getOutputIndex(op,block,port)
index = getOutputIndex(op,block,port,element)

Описание

пример

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';
mdlpath = fullfile(matlabroot,'examples','slcontrol',mdl);
open_system(mdlpath)

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

opspec = operspec(mdl);

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

opspec.Outputs
(1.) scdindex1/Out1
	 spec:  none
(2.) scdindex1/Out2
	 spec:  none

Получите индекс выходной спецификации для 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
(1.) scdplane/alpha (rad)
	 spec:  none
(2.) scdplane/Nz Pilot (g)
	 spec:  none
(3.) scdplane/Aircraft Dynamics Model
	 spec:  none

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

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

     3     1

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

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

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

opspec.Outputs
(1.) scdplane/alpha (rad)
	 spec:  none
(2.) scdplane/Nz Pilot (g)
	 spec:  none
(3.) scdplane/Aircraft Dynamics Model
	 spec:  none
(4.) scdplane/Aircraft Dynamics Model
	 spec:  none

Существует теперь две выходных спецификации, которые соответствуют тому же блоку, один для каждого выходного порта. Получите индекс для выходной спецификации, которая соответствует выходному порту 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
(1.) scdtmp/Out1
	 spec:  none
	 spec:  none
	 spec:  none
	 spec:  none
	 spec:  none
	 spec:  none

Получите индексы всех элементов 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, заданной как объект operspec.

Блок 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