Открытие и закрытие файлов
Файл
обычно является некоторой совокупностью данных, объединенных одним именем. Тип файла, как правило, определяется его расширением. Мы рассматриваем файл как некое целое, хотя физически на диске он может быть представлен несколькими областями — говорят, что в этом случае файл фрагментирован.
Перед использованием любого файла он должен быть
открыт,
а по окончании использования —
закрыт.
Много файлов может быть открыто и доступно для чтения одновременно. Рассмотрим команды открытия и закрытия файлов.
Команда open имя, где имя должно содержать массив символов или символьную переменную, открывает файлы в зависимости от анализа параметра имя и расширения в имени имя:
переменная — открывает массив, названный по имени, в редакторе массивов (Array Editor);
.mat — открывает файл, сохраняет переменные в структуре в рабочей области;
.fig — открывает его в редакторе дескрипторонй графики Property Editor;
.m — открывает m-файл в редакторе-отладчике;
.mdl - открывает модель в Simulink;
.р — открывает, если он есть, m-файл с тем же именем;
. html — открывает HTML документ в браузере помощи.
Если файлы с расширением существуют в пути MATLAB, то открывается тот файл, который возвращается командой which имя, если нет — то файл из файловой системы. Если файл не имеет расширение имени, то он открывается той программой, формат файлов которой был бы обнаружен функцией игпсИГимя файла') По умолчанию для всех файлов с окончаниями, отличными от вышеперечисленных, вызывается openother. Open вызывает функции орепххх, где ххх — расширение файла. Исключение — переменные рабочей области, для которых вызывается openvar, и рисунки, для работы с которыми вызывается openim. Создавая т-файлы с именем орепххх, пользователи могут изменять обработку файлов и добавлять
новые расширения в список. Закрывать файлы, открытые при помощи open, нужно из редакторов, вызываемых ореnххх.
[FILENAME, PATHNAME] = uigetfile(FILTERSPEC. Title). Открывает диалог с именем Title и фильтром FILTERSPEC (например, массивом ячеек, содержащим расширения файлов) и возвращает файл, выбранный пользователем, и путь к нему. Возвращает FILENAME=0, если файл не существует или если пользователь нажал на Cancel. [FILENAME, PATHNAME] = uigetfile (FILTERSPEC, Title. X. Y) размещает окно диалога в точке X, Y (координаты в пикселях).
Пример:
[filename, pathname] = uigetfile('*.m;*.fig;*.mat:*.mdl'. 'All MATLAB Files (*.m, *.fig, *.mat. *.mdl)': ...
[FILENAME, PATHNAME] = uiputfile(FILTERSPEC. TITLE) сохраняет файл в диалоге, управляемом пользователем. Параметры аналогичны таковым в функции uigetfile.
Команда ui open открывает диалог, и если пользователь выбрал файл с известным расширением, вызывает его, используя open, или если имя файла имеет неизвестное расширение, то вызывается uigetfile. Входными аргументами uiopen могут быть mat lab, load, figure, simulink, editor. Без входных аргументов или с входным аргументом matlab в окне диалога предлагается выбрать *.m, *.fig, *.mat, *.mdl (если Simulink установлен) , * . cdr (если state flow установлен) , *.rtw,
*.tmf, *.tlc, *.c, *.h, *.ads, *.adb (если установлен Real-Time Workshop). С аргументом load — *.mat. С аргументом figure предлагаются *.fig; simul ink — *.mdl, editor - *.m, *.mdt *.cdr, *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb.
Пример:
uiopen figure.
Команда uiload открывает файл в диалоге, управляемом пользователем, с использованием команды load.
Функция ui import запускает Мастер импорта (Import Wizard), импортирующий из файла в текущей папке или буфера обмена Windows. Она соответствует выбору Import Data из меню File или выбору Paste Special из меню Edit MATLAB.
ui import (FILENAME) — запускает Мастер Импорта, открывая файл FILENAME. Мастер импорта показывает данные для предварительного просмотра. В окне предварительного просмотра появляются данные и их представление в виде переменных MATLAB. Собственно данные, текст и заголовки представляются разными переменными MATLAB. Для данных ASCII вы должны удостовериться, что Мастер импорта распознал разделители столбцов. Самостоятельно он может распознать только символ табуляции, пробел, запятую или точку с запятой. Нужно щелкнуть мышью на кнопке Next и в следующем окне либо подтвердить выбор разделителя, сделанный Мастером, либо выбрать Other и ввести любой разделитель.
ui import (' -f i le') — вначале выводит диалог выбора файла.
ui import ('-pastespecial') — вначале выводит для предварительного просмотра содержимое буфера обмена Windows.
S = ui import (...) хранит результирующие переменные как поля структуры S.
Команда uisave — управляемое пользователем сохранение (команда save описана в уроке 2) с Windows диалогом.
Функция saveas — сохраняет рисунок или модель Simulink в желаемом формате на носителе информации или на устройстве, разрешенном print.
Функция saveas (H, 'FILENAME' ) — сохраняет данные в соответствии с командой дескрипторной графики Н в файле FILENAME. Формат файла определяется расширением имени FILENAME.
Функция saveas (H. 'FILENAME' . 'FORMAT' ) — выполняет то же, но с параметром FORMAT (формат задается тем же способом, что и расширение имени файла и может от него отличаться). FORMAT имеет приоритет перед расширением имени файла. Параметры функции:
'fig' — сохранить рисунок (график) в двоичном fig-файле;
' m ' или ' mf i д ' — сохранить рисунок в двоичном fig-файле и создать m-файл для его загрузки;
' mmat ' - сохранить рисунок в m-файле как последовательность команд создания рисунка. Может не поддерживать новейшие графические функции.
Примеры:
saveas(gcf. 'output', 'fig') saveas(gcf, 'output', 'bmp')
Команда или функция delete удаляет файл или объект графики.
delete имя файла удаляет файл текущей папки. Может быть использована *. Предпочтительно использование с записью в форме функции delete('mw файла'), когда имя файла — строка.
delete(H) удаляет графический объект с дескриптором Н. Если этот объект — окно, то оно предварительно закрывается.
Функция close(H) закрывает только графические окна. Для закрытия файлов необходимо использовать команду f close.
Для записи файлов на диск служит команда save, используемая в довольно очевидных формах:
save
save filename save filename varl var2 ... save ... option save( ' filename' , ...)
Соответственно для считывания файлов с диска служит команда load:
load
load filename load filename X Y Z
load filename -ascii load filename -mat
S
В этих командах имя файла указывается по правилам, принятым в операционных системах класса MS-DOS. Эти команды обычно дублируются кнопками панелей инструментов и браузером файлов.