Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Применение MATLAB для решения аналитических задач моделирования. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Функции времени и даты Matlab
91
Поскольку данные у нас ежемесячные, то столбца с днями у нас
нет, однако datenum требует указывать дату с точностью до дня. Поэтому будем указывать середину месяца (15 число):
>>datenum(nao(1,1),nao(1,2),15) ans = 712238
Так мы получили дату в маталбовском формате для первого изме-
рения. Мы можем последовательно рассчитать это для каждой строки матрицы или создать цикл, но datenum прекрасно работает с векторами (даже вперемешку со скалярами), поэтому:
>>d = datenum(nao(:,1), nao(:,2), 15); Теперь нужно указать наш вектор с датами в функции plot: >>.plot (d,nao(:,3))
MATLAB откладывает эти числа по оси Х. Однако можно испра-
вить, запустив функцию dateteick:
>>datetick('x','YYYY')
где ‘x’ – ось, с которой мы будем работать, а ‘YYYY’ – формат записи даты (вы можете указать какой угодно, например ‘dd–mmm–yyyy’, ‘mm/dd/yy’, ‘mmmyy’ и т.п.). В результате получаем такую картинку:
В 2014 г. в MATLAB ввели новый формат переменных – datetime. Он
имеет много возможностей и вероятно заметки на эту тему ещё будут на нашем сайте. Пока же ограничимся нашей задачей. Создать вектор со зна­чениями в формате datetime очень просто и аналогично тому, как мы это делали с datenum. С построением тоже сложностей не должно возникнуть:
>>d_new = datetime(nao(:,1),nao(:,2),15); plot (d_new,nao(:,3))
Если вы захотите изменить формат отображения чисел, то можно
использовать xtickformat:
>>xtickformat('yyyy–mm')
Как видно, оба рассмотренных нами способа достаточно простые, но по всей видимости datetime в современных версиях MATLAB более предпочтителен, на нём уже завязаны многие обновлённые функции, а будет завязано ещё больше. Если же у вас уже даты представлены в фор­мате datenum, то перевести его в datetime несложно:
>>d_new2 = datetime(d,'ConvertFrom','datenum');
Применение Matlab для решения аналитических задач моделирования
92
Лабораторная работа № 12.
Функции времени и даты Matlab
В соответствии с вариантом по списку, выполните задание из
табл. 36.
Таблица 36
Варианты заданий для лабораторной работы № 12
№
варианта
Формат
Задание
1
'dd–mmM–yyyy'
Выведите календарь для даты первого полета человека в космос. Рассчитайте, сколько дней прошло с того дня
2
'HH:MM:SS'
Выведите текущее время на экран. Преобра­зуйте дату вашего рождения в ее порядковый номер
3
'dd–rmiM–yyyy HH:MM:SS'
Выведите на экран календарь за последний месяц вашего года рождения
4
'dd–mmM–yyyy'
Выведите календарь для даты вашего первого дня в школе. Рассчитайте, сколько дней про­шло с того дня
5
'dd–rmiM–yyyy HH:MM:SS'
Выведите на экран календарь за первый месяц вашего года рождения
6
'HH:MM:SS'
Преобразуйте дату вашего рождения в ее по­рядковый номер. Выведите календарь для даты вашего дня рождения за прошлый год
7
'dd–mmM–yyyy'
Выведите календарь с датой вашего первого дня в университете
8
'dd–rmiM–yyyy HH:MM:SS'
Выведите на экран календарь за последний месяц вашего года рождения. Рассчитайте, сколько дней прошло с последнего дня рож­дения
9
'dd–mmM–yyyy'
Преобразуйте дату вашего рождения в ее по­рядковый номер. Выведите на экран кален­дарь за первый месяц вашего года рождения
10
'dd–rmiM–yyyy HH:MM:SS'
Выведите на экран календарь за последний месяц вашего года рождения. Рассчитайте, сколько дней прошло с последнего дня рождения
Интеграция Matlab
93
ИНТЕГРАЦИЯ MATLAB
Matlab позволяет проводить интеграцию со сторонними програм­мами и средами разработки. Например, можно создать C/C++ библиотеку в среде Matlab и подключить ее средствами MATLAB Compiler в проект, созданный в Microsoft Visual Studio7.
Интеграция с математическими системами, такими как Mathcad,
Maple V и Mathematica, снижает риск возникновения ошибок в расчетах. MATLAB – Notebook позволяет объединять среду с современными тек- стовыми процессорами, составлять документы в текстовом процессоре Word различных версий. Наличие инструментов для вставки результатов
вычислений в виде документов позволяет оперативно изменять примеры для электронных книг и презентаций. При этом данные могут быть пред­ставлены в численном, табличном и графическом виде (рис. 48). Экспорт фигуры Matlab в Microsoft PowerPoint позволяет создавать наглядные пре­зентации с точными расчетными данными.
Рис. 58. Окно сохранения графики
Графику можно экспортировать разными способами. Например, при копировании рисунков из меню Правка (опция Копировать рисунок) можно воспользоваться любым из рисунков-экспортеров функции (пе­чать, hgexport, SAVEAS) (рис. 49). Разнообразие методов позволяет рабо­тать с растровыми изображениями и векторной графикой. С помощью смарт-экспортера для Matlab можно сразу создать группу объектов для
PowerPoint.
7
Интеграция Matlab и Microsoft Visual Studio с помощью Matlab Compiler. URL: https://exponenta.ru/news/integraciya-matlab-i-microsoft-visual-studio-s-pomo­schyu-matlab-compiler
Применение Matlab для решения аналитических задач моделирования
94
Рис. 69. Экспорт графика
Смарт PowerPoint экспортер для Matlab представляет собой про-
грамму для экспорта фигур Matlab в PowerPoint и преобразует график в группу объектов PowerPoint. Затем он редактирует различные свойства объекта непосредственно в PowerPoint, таким образом, что они могут быть легко изменены без нарушения внешнего вида, выравнивания и т.д. Графиком можно поделиться в Интернете с помощью онлайн­инструментов обмена, таких как SlideOnline.com.
Нажатие на кнопку открывает PowerPoint, с помощью COM-инте-
грации, а также создает объекты один за другим, основываясь на графиче­ских объектах на рисунке.
Интеграция Matlab
95
Лабораторная работа № 13.
Экспорт графиков в MS Power point
Экспортируйте графики, созданные по табл. 27, 28 в лабораторных
7 и 8 во все доступные форматы. Сравните качество и информационный вес полученных файлов. Выберите наиболее эффективный метод экспорта для двумерных и для трехмерных графиков по соотношению «вес­качество». Номер варианта выберите из расчета: № варианта в прошлых лабораторных+1. Таким образом, при обычном выполнении варианта 3, в данной лабораторной требуется построить графики для 4-го варианта.
Применение Matlab для решения аналитических задач моделирования
96
РАБОТА С ФАЙЛАМИ
Создание программ часто предполагает сохранение результатов
расчетов в файлы для их дальнейшего анализа, обработки и хранения. В связи с этим в среде MATLAB реализованы различные функции для работы с файлами, содержащими данные в разных форматах.
Следующие операторы используются для загрузки данных из фай­ла, расположенного на локальном диске, в среду выполнения MATLAB: load, fread и fscanf. Для сохранения данных из рабочей среды MATLAB в файл на локальном диске можно использовать следующие операторы:
save, fwrite, fprintf.
В простейшем случае для сохранения и последующей загрузки ка­ких-либо данных в среде MATLAB предусмотрены соответственно сле- дующие функции: save и load, которые имеют следующий синтаксис:
save<file_name><var_names> load<file_name><var_names>
Функция сохранения позволяет сохранять произвольные перемен­ные, используемые в программе, в файл, который по умолчанию будет находиться в рабочем каталоге (обычно это рабочий подкаталог) и иметь расширение .mat. Соответственно, функция загрузки позволяет загрузить ранее сохраненные переменные из указанного файла с расширением .mat.
Недостатком функций сохранения и загрузки является то, что они работают только с определенными форматами файлов (обычно с расши­рением .mat) и не позволяют загружать или сохранять данные в других форматах. При этом возникает необходимость загрузки информации, например, из бинарных файлов, созданных другими программными про­дуктами, для дальнейшей обработки результатов в среде MATLAB. Для этого в среде MATLAB предусмотрены следующие функции:
fwrite(<file_id>, <variable>, <type>) <variable>=fread(<file_id>, <size>, <accuracy>)
где <file_id> – указатель на файл, с которым вы хотите работать. Для по­лучения идентификатора файла используется функция fopen, имеющая следующий синтаксис:
Работа с файлами
97
<file_id>=fopen(<file_name>,<operating_mode >)
где параметр <operating_mode> может принимать значения, указанные в табл. 37.
Таблица 37
Основные функции для работы с файлами
Функции
Назначение
A = fread(fileID)
Считывает данные из открытого двоичного файла в век­тор-столбец A и устанавливает указатель файла на маркер конца файла. Бинарный файл обозначается идентифика­тором файла, fileID. Используйте fopen, чтобы открыть файл и получить значение fileID. Когда вы закончите чтение, закройте файл, вызвав fclose(fileID)
A = fread (fileID,sizeA)
Ссчитывает данные файла в массив A с размерами sizeA и устанавливает указатель файла после послед-
него прочитанного значения. fread заполняет A в по­рядке столбцов
A = fread (fileID,precision)
Интерпретирует значения в файле в соответствии с формой и размером, описываемыми точностью
A = fread (fileID,sizeA,precision)
Считывает данные файла в массив A с размерами sizeA и устанавливает указатель файла после последнего про­читанного значения. fread заполняет A в порядке столб­цов. Значения в файле интерпретируются в соответ­ствии с формой и размером, описываемыми точностью
A = fread(___,skip)
Пропускает количество байтов или битов, указанное па­раметром skip, после чтения каждого значения в файле
A = fread (___,machinefmt)
Дополнительно указывает порядок чтения байтов или битов в файле
[A,count] = fread(___)
Дополнительно возвращает количество символов, кото­рые fread считывает в A. Вы можете использовать этот синтаксис с любым из входных аргументов предыдущих синтаксисов
Если функция fopen() по какой-то причине не может корректно от-
крыть файл, она возвращает –1. После завершения всех файловых опера­ций файл необходимо закрыть с помощью функции fclose следующей структуры:
fclose(<file_id>)
С помощью команды fclose (all) вы можете закрыть сразу все от-
крытые файлы, кроме стандартных системных файлов.
Применение Matlab для решения аналитических задач моделирования
98
Рис. 50. Пример считывания конкретного количества элементов из файла
В упрощенной версии явно указывается количество элементов фай­ла, которые необходимо подсчитать (рис. 50). Если общее количество эле­ментов неизвестно или динамически изменяется в процессе работы, данные из файла считываются до тех пор, пока не будет достигнут его конец. Что­бы проверить, достигнут ли конец файла, MATLAB использует функцию feof (<идентификатор файла>), которая возвращает 1, когда конец файла достигнут, и 0 в противном случае. EOF расшифровывается по аналогии с другими языками программирования, как конец файла (end of file).
Таблица 38
Режимы работы с файлами в среде MATLAB
при использовании функции fopen
Режим
работы
Назначение
r
Чтение данных
r+
Чтение и запись
w
Запись с заменой содержимого файла
w+
Чтение и запись с заменой содержимого и созданием файла при необходимости
a
Добавление данных и создание файла при необходимости
a+
Чтение данных, добавление данных и создание файла при необхо­димости
b
Работа с бинарными файлами, например, rb – чтение данных из би­нарного файла
Описанные ранее функции для работы с файлами позволяют запи­сывать и читать информацию по байтам, которые затем нужно правильно интерпретировать для преобразования в числа или строки. В то же время результатом работы многих программ являются текстовые файлы, в кото­рых явно прописаны определенные числа или текст. Побайтовое чтение такого файла и последующая интерпретация полученных данных – до-
Работа с файлами
99
вольно трудоемкая задача, поэтому для этих целей были специально раз­работаны функции форматированного чтения или записи информации: fscanf и fprintf соответственно.
Синтаксис fscanf (функция для чтения данных из файла):
[value, count]=fscanf(file_id, format, size) Cинтаксис fprintf (функция для записи данных в файл):
count=fprintf(file_id, format, x,y,...)
где значение (value) – результат чтения данных из файла; count – количе­ство прочитанных (записанных) данных; fid – указатель на файл; format ­формат чтения (записи) данных; size – максимальное количество прочи­танных данных, x,y,… – переменные для записи в файл.
Таблица 39
Основные настройки для параметра format
функций fscanf() и fprintf()
Спецификаторы
Спецификатор
Назначение
%d
целые числа
%f
вещественные числа
%u
беззнаковые целые числа
%c
символы
%s
строковые данные
Управляющие символы
Символ
Назначение
\r
возврат каретки
\t
горизонтальная табуляция
\n
переход на новую строку
Функция fprintf() позволяет вносить в один файл разнородные данные в нужном формате. Доступность строковых переменных позволя­ет добавлять различные текстовые надписи в файл.
Для вывода цветного текста в командной строке вводится функция cprintf. Помимо замены цвета для текста можно задать подчеркивание и полужирное начертание (рис. 51).
Применение Matlab для решения аналитических задач моделирования
100
Рис. 51. Пример использования функции cprintf
Лабораторная работа № 14.
Форматированные файлы
Рассмотрите на практике все перечисленные выше режимы работы
с файлами. Измените и сохраните файл one.txt из библиотеки. Создайте новый файл one.bin и скопируйте в него данные из файла one.txt.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]