Нравится? Делимся информацией!

среда, 21 ноября 2012 г.

Запись данных из Simulink в рабочую область (workspace) МатЛаба, а оттуда эскпорт в Excel.




В 2012а Матлабе это делается так.

Для моего примера (вставить ссылку на пример) необходимы отсчеты сигнала типа float. Их нам и нужно записать в некий файл.
В Симулинке мне пока известно два пути:
1) использовать блок "To File" симулинка (причем пишет только в mat-файл, который все равно придется открывать матлабом и копировать из открытой таблицы нужную строку с сэмплами ).
2) блок "To WorkSpace" и из workspace дальше копировать куда надо.
Проблема есть в каждом блоке (описаны проблемы для MatLAB 2010b):
-1й блок может писать только double значения в файл ( а если нужны другие??? ). Если нужны другие форматы данных, то он может писать в структуру с форматом сохранения данных TimeSeries, который уже поддерживает все форматы данных матлаба, но с этой структурой неудобно работать в 2010b версии матлаба (в 2012а версии - мы так и сделаем, там все хорошо с этим)
-2й блок может любые писать значения, но почему-то пишет в заданную нами переменную 1х1хN значения, а не Nx1 вектор.. Сигнал то одномерный! да и пофигу бы с 1х1хN размером (я бы скопировал нужную строку/столбец), так он пишет в переменную подобным образом (а не в некое подобие Excel'евской таблицы - с ней было бы удобней):
val(:,:,1) =
 4.1032e-006

val(:,:,2) =
 1.3728e-006

val(:,:,3) =
-4.0721e-006

val(:,:,4) =
-3.6393e-006

val(:,:,5) =
 1.7723e-006
и т.д. и т.п.



Итак, версия 2012а более продумана.  Запись в файл (mat-файл) удалась через To file с указанием формата сохранения TimeSeries , но когда мы открываем mat-файл, он загружается в workspace, и тут нажимая на структуре с названием нашей timeseries-переменной (в примере на картинке это “ans”) правой кнопкой мыши мы должны выбрать пункт Open in Time Series Tool (такого в 2010b не было, потому и приходилось париться). В этой тулзе уже все понятно. Можно кучу графиков настроить или сохранить в файл: mat или Excel. Жму сохранить в Excel и автоматом все данные переносятся со всякими разъяснениями в эксель, где один столбец - это дискретное время, другой - мои сэмплы.






Но когда покапавшись в модели, я увеличил время моделирования (до 0,5 с) и попытался после этого экспортировать в эксель данные (их у меня оказалось 78126 сэмплов), у меня всплывает ошибка:





Why do I receive an error
xlwrite, Object returned error code: 0x800A03EC
Решил немного уменьшить время моделирования до 0,4 с (в итоге получил в переменной ans, относящейся к файлу dspInputSamples.mat, 62501 сэмпл). И теперь вуаля - Excel файл стал генерироваться благополучно!!!!=) Видимо, Excel поддерживает 16 битное количество строчек в своих документах!! По крайней мере, это правда для 2003 Excel’я. Excel specifications and limits - вся правда

Торжествуем!!! 










P.S. В 2010 матлабе все делается абсолютно точно также!!!! (проверил на работе - все идентично)

Комментариев нет:

Отправить комментарий