Как поместить данные Simulink в определенные ячейки Excel?
Здравствуйте!
У меня есть модель в Simulink, там вычисляются разные значения на Display'ях и ряд графиков на Scope'ах. И есть в Excel таблица, в которую надо построчно занести некоторые из этих данных (см. прикреп). Особенность в том, что U и I в таблице - их выводят Scope, а P1, Q1 - Display. Мне надо, во-первых, как-то вытащить численные значения из графиков Scope (хотя этот момент я нашёл на ютубе, не нашёл только следующий), во-вторых, оставить из всего множества значений только пиковое (там график - синусоида, поэтому достаточно 2-3 пиковых значений)!!!
Как это сделать?
Касательно Display - как из этого блока значения получить я вообще не нашёл, там нет никакого "Save To Workspace".
Как сделать это?
Затем. Мне надо, как видите для одного моделирование заполнить одну строку! Командой xlswrite пишет данные массива тупо в столбик, ну там ютубер ещё показал, как сместить данные по вертикали, чтоб они писались, например, не в A1:A8, а в A2:A9, но это не очень важно.
Можно как-то сделать так, чтобы данные не столбик сохранялись, а в ряд или придётся выводить в Excel как есть, а потом вручную перемещать в нужные ячейки?
Ответы
Добрый день.
Блок disp действительно не умеет выводить пременные в Workspace, поэтому используйте блок To Workspace.
Найти пиковое значение можно с помощью функций
max
илиfindpeaks
.Чтобы записать в Excel на столбец а строку, надо сначала в матлабе перевести столбец в строку, т.е. транспонировать с помощью функции
transpose()
или оператора'
.Выдаёт ошибку: "Simulink does not support 'Array' format for logging multiport data. Change the logging format of the Scope to 'Dataset', 'Structure', or 'Structure with time'." Менял на Structure, Structure with time и Timeset (Dataset никакого не нашёл почему-то). Ошибка перманентная.
Эти функции знаю, я имел в виду, чтобы их не держать включенными и переписывать показания, а чтобы matlab сам их определял среди тех данных, которые пойдут в Excel. Вручную переписывать я могу, но когда тут есть риск, что моделирований будет две дюжины, то я задолбаюсь всю таблицу заполнять руками.
Не могу попробовать. Убрал To Workspace, а ошибка из 1 пункта осталась. Мне не нравится, куда катится модель...
см.тут. и тут модель или картинку. Что представляют данные которые вы хотите "логить"?
Так вам вроде и советуют (Павел Рословец) сохранить, найти пики или максы, это уж вам виднее. А дисплеи можно вобще выкинуть.
Аааа. Имеется в виду, что это программные слова такие, и их надо вводить в рабочую область? Я просто думал, что речь о настройках Scope внутри симулинка, там ведь можно заставить отображаться пики графиков.
Ну, таблицу я приложил в прикрепе, там I,U - действующие (иногда пиковые) значения токов и напряжений, всё остальное (P,Q,cos,Mэм...) - это мгновенные значения в самом конце моделирования.
В идеале хотелось бы какую-нибудь такую штуковину замутить, чтобы в одном... не знаю, как это правильно на программистском... квадратике с таблицей данных в поле Workspace сохранять не все данные за моделирование, а только последние для тех переменных, которые должны быть мгновенными, только 2-3 пиковых значения для пиковых, и действующие для действующих. И всё вот это в одном "квадратике данных" из разных Scope, To Workspace. Это, как я сказал, в идеале, а вообще в зависимости от того, на сколько что из этого осуществимо.
1. Да.
2. Ясно.
3. Ясно. Имелось ввиду какой формат данных у них в симулинке. Т.е. это массив или структура.
Сделать не сильно сложно думаю.
Если через scope - ограничение по кол-ву точек. Поставить там столько, сколько вам нужно и у них найти пики. Это как пример.
Есть (на сколько помню) блок находящий пики, поищите в хелпе, названия не помню. Можно наверно как-то пожинить с тригером и сохранять только то что в конце.
Либо вобще просто последнюю точку только смотреть. Для действующих значений это точно вариант.
Это так, придумки находу.
UPD: Вот с этой штукой наверняка можно что-то придумать. Блок запоминает значения.
Хорошо, попробую. Может, чё-нибудь и выгорит. Хотя мне уже не кажется, что вручную заносить значения - это очень сложно))
Добрый день! Подскажите, пожалуйста, название видео - "хотя этот момент я нашёл на ютубе, не нашёл только следующий".