exponenta event banner

getOutputIndex

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

Описание

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 команда.

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

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 блока модели динамики самолета.

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 - номер порта первой записи. Пример см. в разделе Получение индекса выходной спецификации обрезки, добавленной к сигналу.

Для просмотра номера порта i-й элемент в выходном массиве op, введите:

op.Outputs(i).PortNumber

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

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

свернуть все

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

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

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

Представлен в R2017a