Как я могу сохранить вывод из Simulink?
Я студент, который учится использовать MATLAB. Для выполнения задания мне нужно создать простой конечный автомат и собрать некоторые результаты. Я привык использовать Verilog/Modelsim, и я хотел бы собирать данные только при изменении выходных данных конечного автомата, что не обязательно каждый раз / период выборки.
Прямо сейчас у меня есть модель, которая выглядит следующим образом:
RequestChart ----> ResponseChart ----> Unit Delay Block --> (Back to RequestChart)
| |
------------------------> Mux --> "To Workspace" Sink Block
Я попытался установить блок приемника для сохранения в формате "Массив", но он сохраняет только 51 значение. Я попытался установить его в "Timeseries", но он экономит тонны нулевых значений.
Может кто-нибудь дать мне несколько советов? Как я уже сказал, MATLAB является новым для меня, пожалуйста, дайте мне знать, если мне нужно уточнить мой вопрос или предоставить дополнительную информацию.
Изменить: Вот снимок экрана моей модели:
2 ответа
Обычно Simulink будет выводить выборку на каждом этапе интеграции. Если вы хотите выводить данные только тогда, когда происходит определенное событие - в данном случае только при изменении некоторых данных, - выполните следующие действия:
- запустить вывод конечного автомата в блок Detect Change (из библиотеки Logic and Bit Operations)
- запустите этот сигнал в триггерный порт триггерной подсистемы.
- запустите вывод конечного автомата в порт данных триггерной подсистемы.
- внутри запущенной подсистемы запустите сигнал данных в блок To Workspace.
Данные будут сохранены только в момент времени, когда срабатывает триггер, т.е. когда ваши данные изменятся.
В окне Simulink убедитесь, что относительный допуск небольшой, чтобы вы могли генерировать гораздо больше точек между временем начала и окончания. Нажмите на опцию Simulation в верхней части окна, затем нажмите на Параметры конфигурации модели.
Оттуда измените относительную терпимость на что-то маленькое... как 1e-10
, После этого попробуйте запустить симуляцию снова. В вашем выходном массиве должно быть намного больше точек, которые вы можете сохранить.