getOutputIndex

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

Описание

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

При обрезке моделей 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
(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 команда.

Добавьте спецификацию выхода к сигналу, исходящему из второго выхода порта блока Aircraft Dynamics 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 блока Aircraft Dynamics 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 объект.

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

  • Выход корневого уровня модели.

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

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

op.Outputs

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

Если вы не задаете portи существует одна запись в выход массиве op который соответствует заданному block, затем значение по умолчанию port - номер порта этой записи. Если в выходном массиве несколько записей, которые соответствуют заданному block, затем значение по умолчанию port - номер порта первой записи. Для получения примера смотрите Get Индекса of Trim Выхода Спецификации Add To Signal.

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

op.Outputs(i).PortNumber

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

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

свернуть все

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

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

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

Введенный в R2017a