Ведение дневника. Загрузка рабочей области сессии.
Мы отмечали, что сессии не записываются на диск стандартной командой save. Однако если такая необходимость есть, можно воспользоваться специальной командой для ведения так называемого дневника сессии:
- diary filename – ведет запись на диск всех команд в строках ввода и полученных результатов в виде текстового файла с указанным именем;
- diary off – приостанавливает запись в файл;
- diary on – вновь начинает запись в файл.
Таким образом, чередуя команды diary off и diary on, можно сохранять нужные фрагменты сессии в их формальном виде. Команду diary можно задать и в виде функции diary('file'), где строка 'file' задает имя файла. Следующий пример поясняет технику применения команды diary:
>
>
diary myfile.m
>
>
1
+
2
ans
=
3
>
>
diary
off
>
>
2
+
3
ans
=
5
>
>
diary
on
sin(
1
)
ans
=
0.8415
>
>
diary
off
Нетрудно заметить, что в данном примере первая операция – 1+2=3 – будет записана в файл myfile.m, вторая – 2+3=5 – не будет записана, третья операция – sin(1)=0.8415 – снова будет записана. Таким образом, будет создан файл сценария (Script-файл) следующего вида:
1
+
2
ans
=
3
diary
off
sin(
1
)
ans
=
0.8415
diary
off
Он приведен в том виде, как записан, т. е. с пробелами между строк. Одна из распространенных ошибок начинающих пользователей – попытка запустить подобный файл в командной строке указанием его имени:
>
>
myfile
??? ans
=
|
Missing variable or
function
.
Error
in
-
>
C:\MATLAB\bin\niyfile.m
On line
3
-
>
ans
=
Обычно это приводит к ошибкам, так как данный файл – это просто текстовая запись команд и результатов их выполнения, не проверяемая на корректность и содержащая ряд строк, ошибочных с позиций синтаксиса языка программирования MATLAB – например, выражения ans =. Зато команда type позволяет просмотреть текст такого файла со всеми записанными действиями:
>
>
type myfile
1
+
2
ans
=
3
diary
off
.
ans
=
0.8415
diary
off
Во избежание отмеченных казусов рекомендуется записывать файл с расширением, отличным от ".m", например ".txt". Это позволит встраивать подобные текстовые файлы дневника сессии в документы, содержащие ее описание.
Загрузка рабочей области сессии
Для загрузки рабочей области ранее проведенной сессии (если она была сохранена) можно использовать команду load:
- load fname… – загрузка ранее сохраненных в файле fname.mat определений со спецификациями на месте многоточия, подобными описанным для команды save (включая ключ – mat для загрузки файлов с расширением ".mat" обычного бинарного формата, используемого по умолчанию);
- load('fname'….) – загрузка файла fname.mat в форме функции.
Если команда (или функция) load используется в ходе проведения сессии, то произойдет замена текущих значений переменных теми значениями, которые были сохранены в считываемом МАТ-файле.
Для задания имен загружаемых файлов может использоваться знак *, означающий загрузку всех файлов с определенными признаками. Например, load demo*.mat означает загрузку всех файлов с началом имени demo, например demo1, demo2, demoa, demob и т. д. Имена загружаемых файлов можно формировать с помощью операций над строковыми выражениями.