Обробка інформації в файлі включає в себе: читання даних, їх зміна пли використання і. нарешті, збереження отриманих результатів. Програмування обробки інформації складається з наступних етапів: відкриття файлу, зчитування даних, запис інформації, закриття файлу. Файли можна використовувати або тільки для читання (вхідні файли з вихідними даними) або тільки для запису (вихідні файли з результатами обробки), або для зміни (вхідний і вихідний файл одночасно). Наступні розділи присвячені опису команд MATLAB, що реалізують перераховані вище дії, і демонстрації їх використання на деяких простих прикладах.
Засоби роботи з файлами в MATLAB мають багато спільного із засобами середовища програмування мови С. Істотною відмінністю є введення даних з файлу. Орієнтований на роботу з масивами. Гпава 8. Обробка даних і прийоми програмування в MA TLAB
зчитування даних і закриття файлу
Команда fopen призначена для відкриття існуючого або створення
нового файлу. Файл вказується в апострофах першим вхідним аргументом. Другий аргумент задає спосіб доступу до файлу, він може набувати таких значень:
'Rt' - відкривається текстовий файл призначений тільки для читання;
'Rt +' - відкривається текстовий файл призначений для читання і запису;
Cl 'wt'- створюваний порожній текстовий файл призначений тільки для запису;
'Wt + 1 - створюваний порожній текстовий файл призначений для запису і читання;
'At' - відкривається текстовий файл призначений тільки для додавання даних в кінець файлу (якщо файлу не існує, то він створюється);
'At +' - відкривається текстовий файл призначений для додавання даних в кінець файлу і читання даних (якщо файл не існує, то він створюється).
Символ t вказує на те, що файл текстовий. Перераховані вище способи доступу можливі і для двійкових файлів. Наприклад: 1 w + 'означає створення порожнього виконуваного файлу для читання і запису.
Вихідним аргументом fopen є ідентифікатор (контрольний або логічний номер), присвоєний файлу. Якщо файл відкрити не вдалося, то ідентифікатор стає рівним мінус одиниці. Помилки часто виникають через те, що MATLAB не може знайти необхідний для читання файл. Завжди краще вказувати повне ім'я файлу, при завданні тільки імені і розширення MATLAB здійснює пошук в поточному каталозі і шляхи пошуку. Наприклад, якщо у вашому поточному каталозі немає файлу beep.m, то fopen ( 'beep.m', 'rt') знайде його в підкаталозі \ toolbox \ matlab \ general \ основного каталогу MATLAB. Функція fopen може бути викликана і з другим додатковим вихідним аргументом- строкової змінної з повідомленням про результат відкриття.
Зчитування рядків з відкритого текстового файлу здійснюється командою fgetl, вхідним аргументом якої є ідентифікатор файлу, присвоєний йому при відкритті, а виходним- строкова змінна. Кожне звернення до fgetl дозволяє послідовно зчитувати рядки по одній від початку до кінця файлу. Контроль за досягненням кінця файлу осущест- 394
____ Частина II. Обчислення і програмування
нляется функцією feof з вхідним аргументом- ідентифікатором файлу, feof повертає логічну одиницю, якщо в файлі немає більше рядків, і логічний нуль в іншому випадку. Після закінчення роботи необхідно закрити файл командою fclose, вказавши в якості вхідного аргументу ідентифікатор файлу.
Файл-функція my view (лістинг 8.2) демонструє відкриття текстового файлу, занесення вмісту в масив рядків і виведення їх на екран. Виклик файл-функції з вхідним аргументом - ім'ям будь-якого існуючого файлу, укладеними в апострофи, призводить до відображення вмісту файлу в командному вікні. Якщо М-файл з файл-функцією myview зберігається в поточному каталозі MATLAB, то myview ( 'myview, m') виводить лістинг самої файл-функції (текст, набраний кирилицею, може виводитися некоректно).
% Функція виводить вміст текстового файлу на екран% використання myview ( 'ім'я файлу')
% Перевірка аргументів if nargout - = О
errorj'функція не має вихідних аргументов1);
error ( 'функція викликається з одним вхідним аргументом');
if -ischar (filename)
error (1 вхідний аргумент функції повинен бути рядком ') J
% Відкриття текстового файлу для зчитування (аргумент 'rt'),
га-ля файлу зберігається в filename,% ідентифікатор файлу записується в F,% рядок з інформацією про можливі помилки - в mes [F, mes] = fopen (filename, 'rt');
Якщо файл успішно відкрився, то ідентифікатор статті не дорівнює мінус одиниці if F - = -1
MAS = 11f% спочатку масив складається тільки з порожнього рядка% Послідовне зчитування з файлу рядки до тих пір,% поки не досягнуто кінець файлу Гпава 8. Обробка даних і прийоми програмування в MA TLAB
% Зчитування рядка line = fgetl (F);