Progress-servis55.ru

Новости из мира ПК
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Matlab работа с файлами

Matlab работа с файлами

Недостатком рассмотренных функций save и load является то, что они работают с определенными форматами файлов (обычно mat-файлы) и не позволяют загружать или сохранять данные в других форматах. Между тем бывает необходимость загружать информацию, например, из бинарных файлов, созданных другими программными продуктами для дальнейшей обработки результатов в MatLab. С этой целью были разработаны функции

Здесь — это указатель на файл, с которым предполагается работать. Чтобы получить идентификатор, используется функция

где параметр может принимать значения, приведенные в табл. 5.1.

Таблица 5.1. Режимы работы с файлами в MatLab

параметр

описание

чтение

запись (стирает предыдущее содержимое файла)

добавление (создает файл, если его нет)

чтение и запись (не создает файл, если его нет)

чтение и запись (очищает прежнее содержимое или создает файл, если его нет)

чтение и добавление (создает файл, если его нет)

дополнительный параметр, означающий работу с бинарными файлами, например, ‘wb’, ‘rb’ ‘rb+’, ‘ab’ и т.п.

Если функция fopen() по каким-либо причинам не может корректно открыть файл, то она возвращает значение -1. Ниже представлен фрагмент программы записи и считывания данных из бинарного файла:

f ); % открытие файла на запись
if f > error(‘File is not opened’);
end

fwrite(fid, A, ‘double’); % запись матрицы в файл (40 байт)
fclose(fid); % закрытие файла

f ); % открытие файла на чтение
if f > error(‘File is not opened’);
end

B = fread(fid, 5, ‘double’); % чтение 5 значений double
disp(B); % отображение на экране
fclose(fid); % закрытие файла

В результате работы данной программы в рабочем каталоге будет создан файл my_file.dat размером 40 байт, в котором будут содержаться 5 значений типа double, записанных в виде последовательности байт (по 8 байт на каждое значение). Функция fread() считывает последовательно сохраненные байты и автоматически преобразовывает их к типу double, т.е. каждые 8 байт интерпретируются как одно значение типа double.

В приведенном примере явно указывалось число элементов (пять) для считывания из файла. Однако часто общее количество элементов бывает наперед неизвестным, либо оно меняется в процессе работы программы. В этом случае было бы лучше считывать данные из файла до тех пор, пока не будет достигнут его конец. В MatLab существует функция для проверки достижения конца файла

которая возвращает 1 при достижении конца файла и 0 в других случаях. Перепишем программу для считывания произвольного числа элементов типа double из входного файла.

f ); % открытие файла на чтение
if f > error(‘File is not opened’);
end

B=0; % инициализация переменной
cnt=1; % инициализация счетчика
while

feof(fid) % цикл, пока не достигнут конец файла
[V,N] = fread(fid, 1, ‘double’); %считывание одного
% значения double (V содержит значение
% элемента, N – число считанных элементов)
if N > 0 % если элемент был прочитан успешно, то
B(cnt)=V; % формируем вектор-строку из значений V
cnt=cnt+1; % увеличиваем счетчик на 1
end
end
disp(B); % отображение результата на экран
fclose(fid); % закрытие файла

В данной программе динамически формируется вектор-строка по мере считывания элементов из входного файла. MatLab автоматически увеличивает размерность векторов, если индекс следующего элемента на 1 больше максимального. Однако на такую процедуру тратится много машинного времени и программа начинает работать заметно медленнее, чем если бы размерность вектора B с самого начала была определена равным 5 элементам, например, так

Следует также отметить, что функция fread() записана с двумя выходными параметрами V и N. Первый параметр содержит значение считанного элемента, а второй – число считанных элементов. В данном случае значение N будет равно 1 каждый раз при корректном считывании информации из файла, и 0 при считывании служебного символа EOF, означающий конец файла. Приведенная ниже проверка позволяет корректно сформировать вектор значений B.

С помощью функций fwrite() и fread() можно сохранять и строковые данные. Например, пусть дана строка

str = ‘Hello MatLab’;

которую требуется сохранить в файл. В этом случае функция fwrite() будет иметь следующую запись:

fwrite(fid, str, ‘int16’);

Здесь используется тип int16, т.к. при работе с русскими буквами система MatLab использует двухбайтовое представление каждого символа. Ниже представлена программа записи и чтения строковых данных, используя функции fwrite() и fread():

f );
if f > error(‘File is not opened’);
end

str=’Привет MatLab’; % строка для записи
fwrite(fid, str, ‘int16’); % запись в файл
fclose(fid);

f );
if f > error(‘File is not opened’);
end

B=»; % инициализация строки
cnt=1;
while

feof(fid)
[V,N] = fread(fid, 1, ‘int16=>char’); % чтение текущего
% символа и преобразование
% его в тип char
if N > 0
B(cnt)=V;
cnt=cnt+1;
end
end
disp(B); % отображение строки на экране
fclose(fid);

Результат выполнения программы будет иметь вид

© 2020 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

Работа с файлами в среде MATLAB

Создание программ часто предполагает сохранение результатов расчетов в файлы для их дальнейшего анализа, обработки и хранения. В связи с этим в среде MATLAB реализованы различные функции по работе с файлами, содержащие данные в разных форматах.

Для загрузки данных из файла,расположенного на локальном диске в рабочую средуMATLAB, используются следующие операторы:load, freadиfscanf. Для сохранения данных из рабочей среды MATLAB в файл на локальном диске предусмотрено использование следующих операторов: save, fwrite, fprintf.

В самом простом случае для сохранения и последующей загрузки каких-либо данных в среде MATLAB предусмотрены следующие функции, соответственно: save и load, имеющие следующий синтаксис:

save

load

Функция save позволяет сохранять произвольные переменные, используемые в программе в файл, который будет по умолчанию располагаться в рабочем каталоге (обычно поддиректория work) и иметь расширение mat. Соответственно функция loadпозволяет загрузить из указанного mat-файла ранее сохраненные переменные.

Недостатком функций save и load является то, что они работают с определенными форматами файлов (обычно mat-файлы) и не позволяют загружать или сохранять данные в других форматах. Между тем бывает необходимость загружать информацию, например, из бинарных файлов, созданных другими программными продуктами для дальнейшей обработки результатов в среде MATLAB. С этой целью в среде MATLAB предусмотрены следующие функции

fwrite( , , )

=fread( , , )

где: – это указатель на файл, с которым предполагается работать. Для того, чтобы получить идентификатор файла, используется функция fopen, имеющая следующий синтаксис:

=fopen( , )

где: параметр может принимать значения, приведенные в таблице 1.

В том случае, если функция fopen() по каким-либо причинам не может корректно открыть файл, то она возвращает значение –1. После выполнения всех файловых операций файл должен быть закрыт с помощью функции fcloseследующей структуры:

fclose( )

С помощью команды fclose(all)можно закрыть сразу все открытые файлы, кроме стандартных системных файлов.

Пример использования функций работы с файлами:

A=[1 2 3 4 5];

f );% открытие файла на запись

fwrite(fid, A, ‘double’);% запись матрицы А в файл

fclose(fid);% закрытие файла
B=fread(fid, 5, ‘double’); % чтение 5 значений в формате double
disp(B); % отображение на экране
fclose(fid); % закрытие файла

В результате выполнения данных операций в рабочем каталоге MATLABбудет создан файл my_file.dat размером 40 байт, в котором будут содержаться 5 значений типа double, записанных в виде последовательности байт (по 8 байт на каждое значение). Функция fread() считывает последовательно сохраненные байты и автоматически преобразовывает их к типу double, т.е. каждые 8 байт интерпретируются как одно значение типа double.

В приведенном примере в явном виде указывалось число элементов для считывания из файла. Однако, часто общее количество элементов бывает неизвестным, либо изменяется в процессе работы программы. В этом случае необходимо считывать данные из файла до тех пор, пока не будет достигнут его конец. В MATLAB существует функция для проверки достижения конца файла,которая возвращает 1 при достижении конца файла и 0 в других случаях и имеет следующий синтаксис:

feof( )

Таблица 1 — Режимы работы с файлами в среде MATLAB при использовании функции fopen

Значение параметраОписание параметра
‘r’чтение
‘w’запись (стирает предыдущее содержимое файла)
‘a’добавление (создает файл, если его нет)
‘r+’чтение и запись (не создает файл, если его нет)
‘w+’чтение и запись (очищает прежнее содержимое или создает файл, если его нет)
‘a+’чтение и добавление (создает файл, если его нет)
‘b’дополнительный параметр, означающий работу с бинарными файлами, например, ‘wb’, ‘rb’ ‘rb+’, ‘ab’

Описанные ранее функции работы с файлами позволяют записывать и считывать информацию по байтам, которые затем требуется правильно интерпретировать для преобразования их в числа или строки. В то же время выходными результатами многих программ являются текстовые файлы, в которых явным образом записаны те или иные числа или текст. Прочитать такой файл побайтно, а затем интерпретировать полученные данные довольно трудоемкая задача, поэтому для этих целей были специально разработаны функции форматированного чтения или записи информации: fscanf и fprintf, соответственно.

Функция чтения fscanfимеет следующий синтаксис:

[value, count]=fscanf(fid, format, size)

где: value – результат считывания данных из файла; count – число прочитанных (записанных) данных; fid – указатель на файл; format – формат чтения (записи) данных; size – максимальное число считываемых данных

Функция записиfprintfимеет следующий синтаксис:

count=fprintf(fid, format, a,b. )

где:a,b,… – переменные для записи в файл.

Таблица 2- Список основных спецификаторов параметра formatдля функций fscanf() и fprintf()

СпецификаторОписание
%dцелочисленные значения
%fвещественные значения
%sстроковые данные
%cсимвольные данные
%uбеззнаковые целые значения

В форматной строке могут бытьтакже использованы различные управляющие символы:

r – возврат каретки;

t – горизонтальная табуляция;

n – переход на новую строку

С помощью функции fprintf() можно осуществлять запись разнородных данных в файл в требуемом формате, в том числе и строковых переменных, что позволяет размещать в файле различные текстовые надписи.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: При сдаче лабораторной работы, студент делает вид, что все знает; преподаватель делает вид, что верит ему. 9888 — | 7543 — или читать все.

Matlab работа с файлами

Команды cd, dir, delete, type позволяют из командной строки системы MATLAB выполнить ряд команд DOS, связанных с управлением файлами. Приведенная таблица отражает связь команд системы MATLAB с командами DOS:

MATLABMS-DOS
cdchdir
dirdir
deletedel или erase
typetype

Большинство этих команд позволяет указывать пути доступа, имена дисководов, использовать групповые символы.

Запуск внешних программ. Признаком перехода к выполнению команд DOS является знак «!», который указывает, что следующая за ним команда — это команда DOS. Это исключительно полезно при вызове утилит и выполнении внешних других программ без выхода из системы MATLAB.

Импорт и экспорт данных

Существует много приемов для перемещения данных между системой MATLAB и другими приложениями. В большинстве случаев при работе с данными системы MATLAB можно просто использовать команды чтения и записи файлов. Для более сложных наборов данных можно создать собственные программы для чтения и записи на языках C или Fortran. Импортирование данных в систему MATLAB. Существует несколько способов для передачи данных из других приложений в систему MATLAB. Выбор способа зависит от объема и формата данных.

  • Ввод данных в виде списка. Если количество данных невелико, то их можно просто напечатать, помещая в квадратные скобки. Этот метод неудобен при большом количестве данных, поскольку их невозможно редактировать.
  • Формирование данных в М-файле.Используя текстовый редактор, можно сформировать М-файл, в колором данные представлены как список элементов, это тот же первый способ, но он имеет то преимущество,что позоляет с помощью редактора корректировать данные. Достаточно после исправления перезапустить М-файл, чтобы ввести исправленные данные.
  • Загрузка данных из ASCII-файла. ASCII-файлы накапливают данные в 7-разрядном коде без контроля по четности. Каждая строка содержит одинаковое количество значений, разделенных пробелами, и завершается символом возврата каретки. Эти файлы можно редактировать, используя обычный текстовый редактор. Их можно читать непосредственно в системе MATLAB, используя функцию load. При этом создается переменная, имя которой совпадает с именем файла. Можно воспользоваться функций dlmread, чтобы указать другой тип разделителя.
  • Чтение данных с использованием функций ввода/вывода. Применение функций ввода/вывода, а также функций fopen и fread, полезно при загрузке файлов данных из других приложений, использующих специальные форматы данных.
  • Использование специальных средств для чтения файлов. Для чтения файлов, записанных в специальных форматах, в системе MATLAB имеются следующие специализированные функции:
ФункцияНазначение
dlmreadЧтение ASCII-файлов
wk1readЧтение электронных таблиц в формате WK1
imreadЧтение изображения из графического файла
aureadЧтение звукового файла с расширением .au (формат фирмы SUN Microsystems)
wavreadЧтение звукового файла с расширением .wav (формат фирмы Microsoft)
  • Создание MEX-файла. Наилучший способ создания программ для ?oения данных — это использовать уже имеющиеся программы на языках C или Fortran для чтения данных из других приложений. Однако этот метод, называемый смешанным программированием, требует написания специальных программ-связок, оформляемых в виде MEX-файлов.
  • Разработка программы на языках Fortran или C. Программисты, использующие языки Fortran или C, могут написать специальные программы для преобразования данных в формат MAT-файла системы MATLAB. В этом случае преобразованные данные могут быть загружены в систему MATLAB с помощью обычной команды load.

Экспортирование данных из системы MATLAB. Существует несколько способов для передачи данных из системы MATLAB в другие приложения.

  • Использование команды diary. Для массивов небольших размеров можно использовать команду diary, чтобы создать файл дневника, который включает команды MATLAB, используемые в течение сеанса работы, а также позволяет на экране просмотреть необходимые данные. Записи дневника могут быть полезны для вложения в документы или отчеты. В дальнейшем можно использовать текстовый редактор для редактирования дневника.
  • Сохранение данных в формате ASCII. Команда save с опцией -ascii позволяет записать данные в этом формате, причем, используя команду dlmwrite, можно задать другой тип разделителя.
  • Использование специальных средств для записи файлов. Для записи файлов в специальных форматах, определяемых приложениями, в системе MATLAB имеются следующие специализированные функции:
ФункцияНазначение
dlmwriteЗапись данных в ASCII-файл
wk1writeЗапись данных в электронную таблицу в формате WK1
imwriteЗапись изображения в графический файл
auwriteЗапись данных в звуковой файл с расширением .au (формат фирмы SUN Microsystems)
wavwriteЗапись данных в звуковой файл с расширением .wav (формат фирмы Microsoft)
  • Создание MEX-файла. Наилучший способ создания программ для записи данных — это использовать уже имеющиеся программы на языках C или Fortran для записи данных в другие приложения. Однако этот метод, называемый смешанным программированием, требует написания специальных программ-связок, оформляемых в виде MEX-файлов.
  • Разработка программы на языках Fortran или C. Программисты, использующие языки Fortran или C, могут написать специальные программы для преобразования данных из формата MAT-файла системы MATLAB в формат приложения. В этом случае данные могут быть выгружены из системы MATLAB с помощью обычной команды save.
  • Текстовые файлы с разделителями. Функции dlmread и dlmwrite позволяют читать и записывать данные, отделенные разделителем, используя ASCII-файл. В качестве разделителя может быть использован любой символ, который отделяет одно значение от другого.

Например, рассмотрим файл с именем ph.dat, который содержит данные, разделенные точкой с запятой:

Для того чтобы прочитать содержимое этого файла в массив с именем A, надо использовать следующий оператор

Второй аргумент функции dlmread указывает тип разделителя.

В дополнение к разделителю, который вы используете, функция dlmread также считает разделителями имеющиеся пробелы. Поэтому функция dlmread, приведенная выше, будет работать правильно, если даже содержимое файла ph.dat будет таким:
7.2; 8.5; 6.2; 6.6
5.4; 9.2 ;8.1; 7.2

Первый аргумент М-функции dlmread — это имя файла, а не идентификатор файла. Поэтому не надо предварительно открывать файл с помощью функции fopen, а следует сразу применять функции dlmread и dlmwrite.

Продемонстрируем, как функция dlmwrite выполняет запись текста с разделителями во внешний файл с именем myfile, используя разделитель «;»:

A =
1 2 3
4 5 6
dlmwrite(‘myfile’,A,’;’)
1; 2; 3
4; 5; 6

Обмен файлами данных для различных платформ. Иногда оказывается необходимо работать с версиями системы MATLAB для разных вычислительных платформ или передавать разработанные приложения на другие системы. Приложения, создаваемые в системе MATLAB могут включать М-файлы, представляющие собой М-функции или М-сценарии, а также МАТ-файлы, содержащие двоичные данные. Оба типа файлов могут быть непосредственно использованы на различных платформах:

  • М-файлы являются ASCII-файлами, содержащими обычный текст. Они не зависимы от типа используемого компьютера. В то же время для различных платформ символами окончания строки могут быть как символ CR, так и символ LF. Интерпретатор системы MATLAB допускает любые комбинации.
  • МАТ-файлы являются двоичными файлами и зависят от типа используемого компьютера. Тем не менее, они могут переноситься с одного типа компьютера на другой, поскольку содержат признак используемого компьютера в заголовке файла. Система MATLAB проверяет этот признак, когда загружает файл и, если оказывается, что файл создан на компьютере другой платформы, выполняет необходимое преобразование.

Чтобы использовать MATLAB на компьютерах различных платформ, необходимы программы обмена данными для двоичного и ASCII-формата. При использовании этих программ надо быть уверенными, что MAT-файлы передаются как двоичные файлы, М-файлы — как ASCII-файлы. Ошибка в установке соответствующих режимов обычно разрушает данные.

Команда diary. Эта команда позволяет сформировать дневник сеанса работы, включая графический вывод. Дневник записывается в специальный файл на жестком диске. После сеанса работы этот файл можно просмотреть с помощью любого текстового редактора.

Например, чтобы создать в текущем каталоге файл дневника с именем febr01.out следует использовать команду diary febr01.out.

Для того чтобы в процессе ведения дневника прервать запись, достаточно воспользоваться командой diary off, а для возобновления командой diary on.

М-файл Startup. Файл matlabrc.m, который размещен в каталоге local, зарезервирован для использования программистами фирмы MathWorks, а на многопользовательских системах для использования менеджером системы.

Файл startup.m предназначен для пользователя. В нем можно устаноаить, задаваемые по умолчанию пути доступа, дескриптоы графики, а также переменные рабочей области.

Например, в файл startup.m можно ввести строку, которая добавит каталог /home/me/mytools к установленному по умолчанию списку путей доступа addpath /home/me/mytools.

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter

Matlab работа с файлами

10. Чтение и запись файлов данных.

Ранее были рассмотрены MAT-файлы, в которых сохраняются переменные из рабочей области системы MATLAB. Также были рассмотрены M-файлы, хранящие текст M-функций. Теперь рассмотрим файлы произвольного формата, в которых M-функции могут записывать, а затем читать собственные данные.

Под собственными данными мы последовательно рассмотрим запись содержимого числовых векторов и матриц, текстовых строк, структур и массивов ячеек.

Начнём с числовых векторов и матриц. Работать будем с так называемыми бинарными ( не текстовыми ) файлами, которые сначала надо открыть с помощью предназначенной для этого функцией fopen системы MATLAB:

f )

где имя файла может предваряться полным путём к нему ( иначе файл должен располагаться в текущем каталоге MATLABа ). Второй параметр этой функции — так называемый флаг открытия файла, говорит о способе дальнейшей работы с файлом:

‘rb’ — только для чтения

‘wb’ — только для записи ( предыдущее содержимое теряется )

Вторая буква в этих примерах говорит о бинарном характере файлов. Возможен ещё флаг, разрешающий как чтение, так и запись файлов одновременно ( ‘r+’ ), но мы его здесь использовать не будем.

Функция fopen возвращает числовой идентификатор открытого файла, который надо использовать в качестве параметра для функций чтения и записи в этот файл. Если операция открытия файла не удалась ( это возможно как по причине отсутствия файла, так и по причине неправильного указания пути к нему на диске ), то функция fopen возвращает -1.

Всегда следует проверять возврат функции fopen:

f );

if( f >

error( ‘File is not opened’ )

end

После того, как файл больше не требуется, его следует закрыть функцией fclose:

fclose( fid )

Чтение и запись информации в бинарные файлы осуществляется функциями fread и fwrite . Функция fwrite, предназначенная для записи информации в файлы, имеет следующие аргументы:

fwrite( fid, A, ‘precision’ )

где fid — файловый идентификатор, возвращаемый функцией fopen; A — вектор или матрица, чьи элементы подлежат записи в файл; строка ‘precision’ говорит о размере памяти, отводимой под вещественные числа. Это 8 байт или 64 бита, так что строка должна иметь вид ‘float64’.

В следующем фрагменте кода создаются вектор-столбец a и матрица B размером 2×3, которые затем записываются в файл с именем ‘dataTest.gqw’ ( здесь расширение имени файла выбрано произвольно так, чтобы не совпасть с известными расширениями ):

a = [ 1; 2; 3 ]; B = [ 4 5 6; 7 8 9 ];

f );

fwrite( fid1, a, ‘float64’ );

fwrite( fid1, B, ‘float64’ );

fclose( fid1 );

Теперь всегда, когда это потребуется, можно прочитать из файла сохранённые там значения вектора и матрицы. Что и иллюстрирует следующий фрагмент кода:

f );

[ a , count ] = fread( fid1, [1 3], ‘float64’ );

[ B , count ] = fread( fid1, [2 3], ‘float64’ );

fclose( fid1 );

Легко убедиться, что прочитанные значения совпадают с ранее записанными. При этом число count равно числу реально прочитанных вещественных чисел. При чтении вектора a это число будет равно 3, а при чтении матрицы B — будет равно 6.

B =

4 5 6

7 8 9

count =

6

Последний из приведённых нами фрагментов кода страдает рядом практических недостатков, которые ярко высвечивают проблемы, с которыми приходится сталкиваться при работе с файлами ( особенно, бинарными ). Во-первых, мы лишь для краткости изложения не применяем проверку правильности открытия файла, о которой мы уже говорили выше.

Во-вторых, при чтении какого-либо данного внутренний указатель текущей позиции ( подлежащей чтению ) файла продвигается на число прочитанных байт информации. В какой-то момент он может выйти на границу файла, и читать станет нечего. Такую ситуацию нужно отслеживать, чтобы не допускать ошибочных действий. Мы же в данном примере положились на наше хорошее знание устройства файла, поэтому мы вначале прочитали вектор, а затем — матрицу ( в другом порядке это делать нельзя ), указав при этом их правильные размеры.

Для отслеживания позиции файлового указателя и работы с ним служат функции feof ( служит для индикации конца файла ), fseek ( устанавливает файловый указатель ), ftell (позволяет узнать значение текущего файлового указателя), frewind ( устанавливает файловый указатель на началдо файла ). Все эти функции имеют прозрачный смысл, поэтому мы их подробно не будем рассматривать. О них всегда можно разузнать в справочной системе MATLABа.

Теперь поговорим немного о записи строк. Пока что мы работали с бинарными файлами. Другим типом файлов являются текстовые файлы. Они специально приспособлены для записи больших фрагментов текста, поскольку этим файлам органически присуще «понимание» деления текста на строки ( в самом что ни на есть книжном смысле этого слова ), а бинарные файлы этого «не понимают». Последние работают только с потоком байт.

Несмотря на только что сказанное, текстовые переменные MATLABа можно записывать и в бинарные файлы. Важно только учесть, что каждый символ требует двух байт, поэтому нужно использовать флаг ‘int16’.

Вот пример такой работы:

str1 = ‘Hello’; str2 = ‘World!’;

f );

fwrite( fid1, str1, ‘int16’ );

fwrite( fid1, str2, ‘int16’ );

fclose( fid1 );

В результате будет создан файл strTest.gqw, содержащий в бинарном формате содержимое двух строковых переменных. Их можно прочесть с помощью функции fread:

f );

[ a , count ] = fread( fid1, 5, ‘int16’ );

[ b , count ] = fread( fid1, 6, ‘int16’ );

str1 = char( a’ ); str2 = char( b’ );

fclose( fid1 );

К прочитанным из файла числовым вектор-столбцам a и b сначала применяется операция транспонирования для перевода их в вектор-строки, а затем осуществляется преобразование к типу char.

Для работы со строковыми данными больше подходят текстовые файлы. Их открывают с флагами ‘r’ или ‘w’ ( букву b, что означает binary — двоичный, теперь добавлять не надо ). Писать и читать строковые переменные в эти файлы удобно с помощью функций fprintf и fscanf. Вот пример записи в файл:

str1 = ‘Hello’; str2 = ‘World!’;

f );

fprintf( fid1, ‘%srn%srn’, str1, str2 );

fclose( fid1 );

Одним вызовом функции fprintf удаётся записать сразу две строковые ( символьные ) переменные str1 и str2. Информацию об этом нужно располагать во втором параметре функции fprint в виде символов формата %s, означающих запись строк. Каждый из этих символов нужно завершать парой специальных символов rn, означающих «возврат каретки и перевод строки». Таким образом, каждая из этих двух строк при чтении файла любым стандартным текстовым редактором ( например, редактором Notepad ) будет показана на отдельной строке:

Текстовые файлы, в отличие от бинарных, можно читать с меньшими предосторожностями и без лишней работы и детальных сведений о записанных значениях строковых переменных ( раньше мы, например, указывали длину строк ). Теперь, когда мы записали две строковые переменные с их разделением спецсимволами rn, мы может читать строки без указания их длины. Для этого следует воспользоваться функцией fgetl ( взять новую строку ):

f );

str1 = fgetl( fid1 ); s

tr2 = fgetl( fid1 );

fclose( fid1 );

Легко убедиться, что прочитанные значения совпадают с ранее записанными в этот текстовый файл:

Никаких специальных функций для записи и чтения в файлы структур и массивов ячеек MATLABа не существует. Поэтому их нужно записывать поэлементно с последующим поэлементным чтением и восстановлением их внутреннего устройства.

Читать еще:  Средства защиты баз данных
Ссылка на основную публикацию
Adblock
detector