Средства поиска и генераторы отчетов уменьшают количество времени и сложность, требуемую записать код, чтобы найти и сообщить относительно элементов модели Simulink®, таких как схемы и блоки, и на графиках Stateflow® и переходах, и т.д. API Отчета Simulink Report Generator™ является слоем сверху API DOM. Его средства поиска и генераторы отчетов основаны на Simulink, и Stateflow находят базовый класс. Вы задаете контейнер, в котором можно найти определенные элементы, такие как блоки в подсистеме или состояния в графике. Объекты средства поиска возвращают свои результаты в соответствующем массиве объектов результата средства поиска.
API Отчета Simulink также включает классы генератора отчетов, которые возвращают изображение контейнера. Это изображение является верхним уровнем модели.
Каждый объект результата, возвращенный средством поиска, имеет связанный объект генератора отчетов, который сообщает относительно тех результатов. Объект генератора отчетов содержит содержимое и форматирует содержимое, такое как таблицы свойств и графики данных. Вы добавляете, что генератор отчетов возражает против ваших отчетов. Используйте генераторы отчетов MATLAB® Report API, чтобы задать общие элементы отчета. Смотрите то, Что Генератор отчетов? (MATLAB Report Generator) для получения информации.
Все средства поиска и генераторы отчетов имеют эти функции:
Поведения по умолчанию и значения
Позвольте заменять и настраивать их вывод
Все средства поиска имеют find
, hasNext
и методы next
. Метод find
находит и возвращает в массиве объектов результата все элементы для каждого найденного элемента заданного типа. hasNext
и методы next
находят и возвращают один элемент за один раз и используются, чтобы выполнить итерации по списку результатов. Метод hasNext
проверяет, имеет ли контейнер по крайней мере один из элемента заданного типа. Если контейнер имеет один или несколько элементов, то метод hasNext
ставит его в очередь для метода next
, чтобы найти и возвратить в результате объект.
Все генераторы отчетов предопределили шаблоны. Шаблон для каждого генератора отчетов задает свое форматирование, размещение и дыры содержимого. Вы не должны изменять шаблон или задавать любые форматы, размещения или дыры, если вы не хотите индивидуально настраиваемый отчет. Можно настроить отчет путем копирования и редактирования его шаблона по умолчанию или при помощи нового шаблона. Редактирование копии шаблона по умолчанию дает вам отправную точку и структуру, чтобы следовать, чтобы настроить ваш шаблон. Используя новый шаблон позволяет вам полностью задать свой шаблон начиная с пустого файла. Чтобы изменить порядок содержимого отчета, переупорядочьте дыры в шаблоне. Средства поиска не используют шаблоны. Другой способ настроить класс генератора отчетов путем разделения на подклассы его.
Шаблоны генератора отчетов по умолчанию для каждого выходного типа находятся в библиотеке шаблонов, которая является в
matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\ +report\@<reporter>\resources\templates\<output>
DiagramReporter
для PDF вывод matlab\toolbox\shared\slreportgen\rpt\rpt\+slreportgen\ +report\@DiagramReporter\resources\templates\pdf\default.pdftx
API Отчета Simulink предоставляет им средство поиска, результат и классы генератора отчетов. Чтобы использовать эти классы в программе генератора отчетов, необходимо создать контейнер типа slreportgen.report.Report
, чтобы содержать отчет.
Сообщите о классе API | Описание | Возвращается |
---|---|---|
slreportgen.finder.AnnotationFinder | Находит аннотации Диаграммы Simulink | Средство поиска аннотации. Его связанный метод find возвращает список объектов DiagramElementResult . |
slreportgen.finder.BlockFinder | Находит блоки в Диаграмме Simulink | Блокируйте средство поиска. Его связанный метод find возвращает список объектов BlockResult . |
slreportgen.finder.BlockResult | Создайте объект результата средства поиска для блока | Объект результата для блока |
slreportgen.finder.ChartDiagramFinder | Находит диаграммы Stateflow в модели | Средство поиска схемы диаграммы Stateflow. Его связанный метод find возвращает список объектов DiagramResult . |
slreportgen.finder.DiagramElementFinder | Находит элементы Диаграммы Simulink или диаграммы Stateflow | Средство поиска элемента диаграммы. Его связанный метод find возвращает список объектов DiagramElementResult . |
slreportgen.finder.DiagramElementResult | Контейнер для элемента диаграммы найден DiagramElementFinder | Объект результата для элемента диаграммы |
slreportgen.finder.DiagramFinder | Находит блок-схемы и графики в модели Simulink | Схематически изобразите средство поиска, Его связанный метод find возвращает список объектов DiagramResult . |
slreportgen.finder.DiagramResult | Контейнер для элемента диаграммы найден DiagramElementFinder | Объект результата для схемы |
slreportgen.finder.StateFinder | Находит состояния в диаграмме Stateflow | Средство поиска состояния. Его связанный метод find возвращает список объектов DiagramElementResult . |
slreportgen.finder.StateflowDiagramElementFinder | Находит элементы диаграммы Stateflow | Средство поиска схемы диаграммы Stateflow. Его связанный метод find возвращает список объектов DiagramElementResult . |
slreportgen.finder.SystemDiagramFinder | Находит системные блок-схемы в модели Simulink | Средство поиска диаграммы Simulink. Его связанный метод find возвращает список объектов DiagramResult . |
Сообщите о классе API | Описание | Возвращается |
---|---|---|
slreportgen.report.Diagram | Создает снимок состояния Диаграммы Simulink или диаграммы Stateflow | Возвращает изображение и заголовок Диаграммы Simulink или диаграммы Stateflow |
slreportgen.report.LookupTable | Точки останова отчетов и выходные точки блока интерполяционной таблицы Simulink | Возвращает таблицу, и график Интерполяционной таблицы блокируют выходные значения по сравнению с точками останова и таблицу типов данных |
slreportgen.report.MATLABreportgen | Скрипт отчетов используется блоком | Возвращает таблицу MATLAB reportgen свойства блока, reportgen сводные данные аргумента ввода и вывода и код MATLAB, используемый блоком. |
slreportgen.report.SimulinkObjectProperties | Составляет таблицу свойств объекта Simulink | Возвращает таблицу значения свойства заданного объекта Simulink |
slreportgen.report.StateflowObjectProperties | Составляет таблицу свойств объекта Stateflow | Возвращает таблицу значения свойства заданного объекта Stateflow |
Этот пример показывает, как найти и сообщить относительно всех блоков Simulink в модели vdp
с помощью класса BlockFinder
. Получившийся отчет HTML включает информацию по умолчанию и использует форматирование значения по умолчанию для каждого блока.
Импортируйте пакет API Отчета, которые позволяют вам использовать имена классов без включения их имен пакета. Например, можно использовать BlockFinder
вместо slreportgen.finder.BlockFinder
. В дополнение к импорту базовых классов API Отчета Simulink импортируйте базовый класс API Отчета MATLAB. Типичный отчет включает в себя титульный лист, оглавление, главы и разделы, которые вы включаете как классы генератора отчетов в API Отчета MATLAB.
import slreportgen.finder.* import slreportgen.report.* import mlreportgen.report.*
Загрузите модель vdp
.
model_name = 'vdp'; load_system(model_name)
Создайте контейнерный объект, чтобы содержать отчет и открыть отчет. В этом случае выходной отчет сохранен в заархивированном отчете HTML vdp_model.htmx
. Можно использовать любое выходное имя, которое вы хотите. Если при запуске генератор отчетов несколько раз с помощью того же имени выходного файла, выходной файл перезаписывается. Чтобы использовать средства поиска API Отчета Simulink и генераторы отчетов в вашей программе генератора отчетов, необходимо использовать полностью определенное имя, чтобы создать контейнерный объект.
rpt = slreportgen.report.Report('vdp_model','html'); open(rpt)
Добавьте главу и задайте ее заголовок.
ch = Chapter('Blocks in Simulink vdp model');
Используйте класс BlockFinder
, чтобы создать средство поиска. В этом случае BlockFinder
находит все блоки в модели. Используйте метод find
, чтобы найти блоки заданными средством поиска.
finder = BlockFinder(model_name); results = find(finder);
Цикл через результаты метода находки и создает раздел для каждого блока и добавляет таблицу свойства блока в раздел. Затем добавьте каждый раздел в главу. После того, как все блоки были добавлены, добавьте главу в отчет.
for result = results sect = Section('Title',result.Name); add(sect,result) add(ch,sect) end add (rpt,ch);
Закройте отчет и модель, и просмотрите отчет.
close(rpt); close_system(model_name); rptview(rpt);
Полная программа
import slreportgen.finder.* import slreportgen.report.* import mlreportgen.report.* model_name = 'vdp'; load_system(model_name); rpt = slreportgen.report.Report('vdp_model','html'); open(rpt) ch = Chapter('Blocks in Simulink vdp model'); finder = BlockFinder(model_name); results = find(finder); for result = results sect = Section('Title',result.Name); add(sect,result) add(ch,sect); end add (rpt,ch); close(rpt) close_system(model_name) rptview(rpt)
Заголовок главы и заголовки раздела и таблицы свойства первых двух блоков получившегося отчета показывают.
Создайте генератор отчетов PDF, который находит все блоки в модели sldemo_radar_eml
.
Чтобы найти все блоки, используйте BlockFinder
. Оператор if
показывает, как протестировать на MATLAB reportgen блоки. Используйте генератор отчетов MATLABreportgen
, чтобы сообщить о MATLAB reportgen детали блока. Оператор else
показывает, как блоки кроме MATLAB reportgen блоки используют
результаты метода find
BlockFinder
.
blkfinder = BlockFinder(model_name); blks = find(blkfinder); if slreportgen.utils.isMATLABreportgen(blks(i).Object) rptr = MATLABreportgen(blks(i).Object); sec = Section(blks(i).Name); add(sec,rptr) add(ch,sec) else sec = Section(blks(i).Name); add(sec,blks(i)) add(ch,sec)
blkfinder = BlockFinder(model_name); blks = find(blkfinder);
Полная программа
import slreportgen.report.* import slreportgen.finder.* model_name = 'sldemo_radar_eml'; load_system(model_name) rpt = slreportgen.report.Report('radar','pdf'); open(rpt) blkfinder = BlockFinder(model_name); blks = find(blkfinder); ch = Chapter('Blocks in sldemo_radar_eml Model'); for i=1:length(blks) if slreportgen.utils.isMATLABreportgen(blks(i).Object) rptr = MATLABreportgen(blks(i).Object); sec = Section(blks(i).Name); add(sec,rptr) add(ch,sec) else sec = Section(blks(i).Name); add(sec,blks(i)) add(ch,sec) end end add(rpt,ch) close(rpt) close_system(model_name) rptview(rpt)
Пример информации, сообщенной для MATLAB reportgen блок генератором отчетов MATLABreportgen
,
Пример информации, сообщенной методом find
BlockFinder
,
Этот пример описывает, как найти и сообщить относительно состояний Stateflow, переходов и соединений. Это сообщает относительно графика control_logic
модели sldemo_fuelsys
.
Этот фрагмент кода использует StateFinder
и его метод find
, чтобы найти и сообщить относительно состояний в графике. Это циклично выполняется через массив найденных состояний и добавляет каждого в главу.
stFinder = StateFinder(subsys); states = find(stFinder); for state = states add(chapter,state) end add(rpt,chapter)
Чтобы сообщить относительно переходов, используйте StateflowDiagramElementFinder
и его метод find
. Чтобы показать таблицу свойства с более узкой шириной, чем значение по умолчанию, настройте вывод. Во-первых, получите генератор отчетов для результата. Чтобы установить ширину, используйте свойство TableWidth
генератора отчетов.
chapter = Chapter('Title','Transitions'); trFinder = StateflowDiagramElementFinder... ('Container',subsys,'Types','transition'); transitions = find(trFinder); for transition = transitions rptr = transition.getReporter; rptr.PropertyTable.TableWidth = '3in'; add(chapter,rptr) end add(rpt,chapter)
Полная программа
import mlreportgen.report.* import slreportgen.report.* import slreportgen.finder.* model_name = 'sldemo_fuelsys'; load_system(model_name); subsys = strcat(model_name,... '/fuel_rate_control/control_logic'); rpt = slreportgen.report.Report('output','pdf'); open(rpt) tp = TitlePage('Title',... 'Control Logic Chart of sldemo_fuelsys'); add(rpt,tp) add(rpt,TableOfContents); chapter = Chapter('Title','States'); stFinder = StateFinder(subsys); states = find(stFinder); for state = states add(chapter,state) end add(rpt,chapter) chapter = Chapter('Title','Transitions'); trFinder = StateflowDiagramElementFinder... ('Container',subsys,'Types','transition'); transitions = find(trFinder); for transition = transitions rptr = transition.getReporter; rptr.PropertyTable.TableWidth = '3in'; add(chapter,rptr) end add(rpt,chapter) close(rpt) close_system(model_name) rptview(rpt)