- •Министерство сельского хозяйства рф
- •Оглавление
- •Введение
- •Лабораторная работа №1 Знакомство с системой. Работа с векторами и матрицами.
- •1.Работа с числами и константами.
- •2.Работа с векторами и матрицами.
- •3.Форматы выдачи на экран.
- •Лабораторная работа №2
- •Лабораторная работа №3 Графический способ решения уравнений. Минимум функции. Интегрирование.
- •1.Решение уравнений.
- •2. Интегрирование.
- •Лабораторная работа №4 Работа с полиномами. Интерполирование.
- •1.Работа с полиномами.
- •2.Приближение по методу наименьших квадратов.
- •3.Интерполяция сплайнами.
- •Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.
- •1. Открытие файла, считывание данных и закрытие файла.
- •2.Запись в текстовый файл.
- •Лабораторная работа №6 Создание приложений в среде guide. Часть 1.
- •1.Создание простого приложения.
- •2.Программное изменение свойств.
- •3.Программирование элементов интерфейса. Флаги и рамки.
- •Лабораторная работа №7 Создание приложений в среде guide. Часть 2.
- •4.Переключатели.
- •5.Списки.
- •6.Полосы скроллинга.
- •Библиографический список
Лабораторная работа №5 Работа с текстовыми файлами. Работа со структурами.
Цель работы: освоить работу с текстовыми и m-файлами, работу со структурами и массивами структур.
1. Открытие файла, считывание данных и закрытие файла.
Команда fopen предназначена для открытия существующего или для создания нового файла. Имя файла указывается в апострофах первым входным аргументом. Второй аргумент задает способ доступа к файлу, он может принимать следующие значения (символ t указывает на то, что файл текстовый):
'rt' — открываемый текстовый файл предназначен только для чтения;
'rt+' — открываемый текстовый файл предназначен для чтения и записи;
'wt' — создаваемый пустой текстовый файл предназначен только для записи;
'wt+' — создаваемый пустой текстовый файл предназначен для записи и чтения.
Выходными аргументами fopen являются идентификатор, присвоенный файлу, и строковая переменная с сообщением о результате открытия. Если файл открыть не удалось, то идентификатор становится равным минус единице. Ошибки часто возникают из-за того, что MatLab не может найти требуемый файл. Всегда лучше указывать полное имя файла, при задании только имени и расширения MatLab производит поиск в текущем каталоге.
Считывание строк из открытого текстового файла производится командой fgetl, входным аргументом которой является идентификатор файла, присвоенный ему при открытии, а выходным — строковая переменная. Каждое обращение к fgetl позволяет последовательно считывать строки от начала до конца файла. Контроль за достижением конца файла осуществляется функцией feof с .входным аргументом — идентификатором файла, feof возвращает единицу, если в файле нет больше строк, и ноль — в противном случае. По окончании работы необходимо закрыть файл командой fclose, указав в качестве входного аргумента идентификатор файла.
Файл-функция myview демонстрирует открытие текстового файла, занесение содержимого в массив строк и вывод их на экран. Вызов файл-функции с входным аргументом — именем любого существующего файла, заключенным в апострофы, приводит к отображению содержимого файла в командном окне. Если М-файл с файл-функцией myview хранится в текущем каталоге MatLab, то команда myview (.'myview.m') выводит листинг самой файл-функции.
function myview(filename)
% Функция выводит содержимое текстового файла на экран
% использование myview('имя файла')
% проверка аргументов
if nargout ~= 0
error('Функция не имеет выходных аргументов');
end
if nargin ~= 1
error('Функция вызывается с одним входным аргументом');
end
if ~ischar (filename)
error('Входной аргумент функции является строкой');
end
% Открытие текстового файла для считывания (аргумент 'rt'),
% имя файла хранится в filename,
% идентификатор файла записывается в F,
% строка с информацией о возможных ошибках в mes
[F, mes] = fopen(filename, 'rt');
% Если файл'успешно открылся, то идентификатор не равен минус единице
if F ~= -1
MAS = ' '; % сначала массив состоит только из пустой строки
% Последовательное считывание из файла строки до тех пор,
% пока не достигнут конец файла
while feof(F) == 0
% считывание строки
line = fgetl(F);
%добавление считанной строки в массив строк
MAS=char(MAS,line);
end
%закрытие файла
fclose(F);
%вывод массива строк в командное окно
disp(MAS)
else
% в эту ветвь программа заходит, если при открытии файла
%возникли ошибки
%происходит информирование об ошибке и вывод в командное
%окно сообщения, выданного fopen
disp(‘Ошибка при открытии файла’)
disp(mes)
end