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