В системе matlab файлы с расширением mdl предназначены для хранения

Обновлено: 07.07.2024

[Matlab] Операции с файлами в Matlab: fopen, fseek, fread, fclose и т. Д.

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

1. Открытие и закрытие файла

1) Откройте файл
Перед чтением и записью файла необходимо использовать функцию fopen, чтобы открыть или создать файл, и указать режим работы для файла. Формат вызова функции fopen:
fid = fopen (имя файла, «открытый метод»)
Примечание: fid используется для хранения значения дескриптора файла. Если возвращаемое значение дескриптора больше 0, файл открывается успешно. В имени файла используется строка символов, чтобы указать файл данных, который нужно открыть. Распространенные способы открытия следующие:
 ‘r’: откройте файл в режиме только для чтения (режим по умолчанию), файл должен уже существовать.
 ‘r +’: откройте файл в режиме чтения-записи, после открытия сначала прочтите, а затем запишите. Файл должен уже существовать.
 ‘w’: записывать данные после открытия. Файл обновляется, если он уже существует; если он не существует, он создается.
 ‘w +’: откройте файл в режиме чтения-записи. Сначала читайте, потом пишите. Файл обновляется, если он уже существует; если он не существует, он создается.
 ‘a’: добавить данные в конец открытого файла. Если файл не существует, он создается.
 ‘a +’: после открытия файла сначала считайте данные, а затем добавьте данные. Если файл не существует, он создается.
Кроме того, добавьте "t" после этих строк, например,'rt 'или'wt +', тогда файл будет открыт в текстовом режиме; если добавлен "b", то Открыть в двоичном формате, который также является методом открытия по умолчанию для функции fopen.

2) Закройте файл
Файл должен быть закрыт вовремя после операций чтения и записи, чтобы избежать потери данных. Используйте функцию fclose, чтобы закрыть файл. Формат вызова:
sta=fclose(fid)
Описание: эта функция закрывает файл, представленный fid. sta представляет собой код возврата операции закрытия файла. Если закрытие прошло успешно, возвращается 0, в противном случае - -1. Если вы хотите закрыть все открытые файлы, используйте fclose («все»).

2. Операции чтения и записи двоичных файлов.

1) Записывать двоичные файлы
Функция fwrite записывает элементы матрицы в файл в соответствии с указанной точностью данных. Формат звонка:
COUNT=fwrite(fid,A,precision)
Описание: COUNT возвращает количество записанных элементов данных (по умолчанию), fid - дескриптор файла, A используется для хранения данных, записанных в файл, precision представляет точность данных, обычно используется Точность данных включает: char, uchar, int, long, float, double и т. Д. По умолчанию точность данных равна uchar, то есть беззнаковому формату символов.
Пример 6.8 Сохранение двоичной матрицы в файл на диске.

a=[1 2 3 4 5 6 7 8 9];
fid = fopen (‘d: \ test.bin’, ‘wb’)% Откройте файл, записав двоичные данные
fid =
3%, значение которого больше 0, что означает успешное открытие

fwrite(fid,a,‘double’)
ans =
9% означает, что записано 9 данных.

fclose(fid)
ans =
0% означает, что выключение прошло успешно.

2) Читать двоичные файлы
Функция fread может считывать данные двоичного файла и сохранять их в матрице. Формат звонка:
[A,COUNT]=fread(fid,size,precision)
Описание: где A - матрица, используемая для хранения считанных данных, COUNT - количество возвращенных элементов данных, fid - дескриптор файла, а размер является необязательным. Если не выбран, Прочитать все содержимое файла; если этот параметр выбран, его значение может быть следующими: N (читать N элементов в вектор-столбец), inf (читать весь файл), [M, N] (читать данные в M × N Данные хранятся в столбцах). Precision используется для контроля точности записываемых данных, и его форма такая же, как у функции fwrite.

3. Операции чтения и записи текстовых файлов.
1) Прочитать текстовый файл
Функция fscanf может считывать содержимое текстового файла и сохранять его в матрице в соответствии с указанным форматом. Формат звонка:
[A,COUNT]=fscanf(fid,format,size)
Описание: A используется для хранения считанных данных, COUNT возвращает количество прочитанных элементов данных, fid - это дескриптор файла, формат используется для управления форматом считанных данных и% В сочетании с символами формата распространенными символами формата являются: d (целое число), f (с плавающей точкой), s (строка), c (символ) и т. Д. Вы также можете вставить дополнительные символы между% и символами формата. Спецификатор формата, например описание ширины данных. Размер не является обязательным, он определяет порядок данных в матрице A. Он может принимать следующие значения: N (чтение N элементов в вектор-столбец), inf (чтение всего файла), [M, N] (чтение данных в В матрице M × N данные хранятся в столбцах).

Использование fscanf в Matlab выглядит следующим образом:
A=fscanf(fid,format)
[A, count]=fscanf(fid,format,size)
[A, count]=fscanf(fid,format,size)

Лично наиболее часто используемая форма такова:
data = fscanf(fid,format,size);
, где данные - это массив прочитанного содержимого, а его размер определяется размером. size - вектор [mn], m - строка, n - столбец (обратите внимание, что здесь порядок чтения - сначала столбец, если вы не понимаете, вы можете увидеть пример ниже), если n - inf, это означает чтение до конца файла. . fid - это возвращаемое значение файла, открытого fopen, а format - это параметр форматирования (например, printf, scanf).

Приведи небольшой пример:
Путь + имя файла: d: \ moon.txt
Содержание: 13,1,3.4

Теперь, чтобы прочитать данные из moon.txt в массиве, вы можете использовать следующий метод:
fid=fopen(‘d:\moon.txt’);
data = fscanf (fid, ’% f,% f,% f’, [3, inf]);% используйте здесь одинарные кавычки
fclose(fid);

На данный момент данные в данных выглядят следующим образом: (3 строки и 4 столбца, элементы MATLAB расположены в порядке столбцов)

Обычно нам может потребоваться ссылка на определенную строку или определенный столбец в массиве, чтобы нарисовать изображение, метод - данные (m, :) или данные (:, n), то есть получить m-ю строку или n-й столбец массива данных.

2) Напишите текстовый файл
Функция fprintf может записывать данные в текстовый файл в указанном формате. Формат звонка:
fprintf(fid,format,A)
Описание: fid - это дескриптор файла, который указывает файл, в который будет выполняться запись. format - это символ формата, используемый для управления форматом записываемых данных, который аналогичен функции fscanf. A используется для хранения данных. матрица.
Пример 6.9. Создайте символьную матрицу и сохраните ее на диск, затем считайте и назначьте другой матрице.

matlab читает текстовый файл
fid=fopen(‘fx.txt’,‘r’);
% получить номер файла
[f,count]=fscanf(fid,’%f %f’,[12,90]);
% Прочитать данные файла номер 1 в f. Где f - матрица [12 90]
% Здесь ’% f% f’ представляет формат чтения данных, которые считываются как исходный тип данных.
fclose(fid);
% Закрыть файл

Кроме того, некоторые файлы txt можно открывать с помощью load
Предложение
f=load('fx.txt)
Я лично считаю, что первый способ лучше. Потому что иногда, особенно когда в одной строке fx.txt содержится несколько данных, использование load более проблематично.

4. Расположение файла данных
MATLAB предоставляет функции fseek и ftell, связанные с операциями позиционирования файлов. Функция fseek используется для определения местоположения указателя позиции файла, и ее формат вызова:
status=fseek(fid, offset, origin)
, где fid - дескриптор файла, смещение представляет количество байтов, перемещаемых указателем позиции, а значения OFFSET интерпретируются следующим образом:

0 Move toward the end of the file.
= 0 Do not change position.
< 0 Move toward the beginning of the file.
origin представляет исходную позицию перемещения указателя позиции, значения ORIGIN интерпретируются следующим образом:
‘bof’ or -1 Beginning of file
‘cof’ or 0 Current position in file
‘eof’ or 1 End of file。
Если позиционирование выполнено успешно, возвращаемое значение статуса - 0, в противном случае возвращаемое значение - –1.

Функция ftell возвращает текущую позицию указателя файла, и ее формат вызова:
position=ftell (fid)
Возвращаемое значение - это количество байтов от начала файла до текущей позиции указателя. Если возвращаемое значение равно –1, это означает, что текущая позиция файла не может быть получена.
Пример:
FID=fopen(‘sw.m’,‘r’)
fseek(FID,10,-1)
ans =
0

ftell(FID)
ans =
2180
Указатель файла можно переместить за конец текущего файла, но не перед его началом; когда указатель перемещается за конец файла, если файл закрыт, размер файла автоматически увеличивается до размера файла. Размер, указанный указателем, позволяет легко создать большой файл с помощью этого метода, конечно, содержимое нового добавленного файла является случайным.

[Приложение: Matlab читает исходный код файлов формата grd]
clc;
clear all;
close all;
fid=fopen([‘C:\Zhenghui_Code\testDLL\testForDLL\kms04ssh-egm96u.grd’],‘r’);

head = fread (fid, 4, ‘uint8 => char’) ’;% Прочтите заголовок файла DSAA
fscanf(fid,’\n’);

nx = fscanf (fid, ’% d’, 1);% прочитано количество строк данных сетки nnx, количество столбцов nnz
fp = fseek (fid, 1,0);% 1 означает, что указатель прочитанного файла сдвигается назад на 1 бит, а 0 означает, что указатель перемещается относительно текущей позиции
ny=fscanf(fid,’%d’,1);
fscanf(fid,’\n’);

xmin = fscanf (fid, ’% f’, 1);% считывает минимальное и максимальное значения x
fseek (fid, 4,1);% 4 означает, что указатель прочитанного файла сдвинут назад на 4 бита, 1 означает, что ссылочная позиция перемещения указателя является концом файла
xmax=fscanf(fid,’%f’,1);
fscanf(fid,’\n’);

ymin = fscanf (fid, ’% f’, 1);% считывает минимальное и максимальное значения y
fseek(fid,4,1);
ymax=fscanf(fid,’%f’,1);
fscanf(fid,’\n’);

zmin = fscanf (fid, ’% f’, 1);% считывает минимальное и максимальное значения z
fseek(fid,4,1);
zmax=fscanf(fid,’%f’,1);
fscanf(fid,’\n’);

for i = 1: ny% Обратите внимание, что Matlab хранит данные в порядке столбцов, сначала столбец 1, затем столбец 2, а затем последний столбец.
for m=1:nx
vp(i,m)=fscanf(fid,’%f’,1);
fseek(fid,4,1);
end
fscanf(fid,’\n’);
end

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

Файл обычно является некоторой совокупностью данных, объединенных одним именем. Тип файла, как правило, определяется его расширением. Мы рассматриваем файл как некое целое, хотя физически на диске он может быть представлен несколькими областями – говорят, что в этом случае файл фрагментирован.

Перед использованием любого файла он должен быть открыт, а по окончании использования – закрыт. Много файлов может быть открыто и доступно для чтения одновременно. Рассмотрим команды открытия и закрытия файлов.

  • Команда open имя, где имя должно содержать массив символов или символьную переменную, открывает файлы в зависимости от анализа параметра имя и расширения в имени имя:
    • переменная – открывает массив, названный по имени, в редакторе массивов (Array Editor);
    • .mat – открывает файл, сохраняет переменные в структуре в рабочей области;
    • .fig – открывает его в редакторе дескрипторонй графики Property Editor;
    • .m – открывает m-файл в редакторе-отладчике;
    • .mdl – открывает модель в Simulink;
    • .р – открывает, если он есть, m-файл с тем же именем;
    • .html – открывает HTML документ в браузере помощи.

    Если файлы с расширением существуют в пути MATLAB, то открывается тот файл, который возвращается командой which имя, если нет – то файл из файловой системы. Если файл не имеет расширение имени, то он открывается той программой, формат файлов которой был бы обнаружен функцией 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)' ).
    • Команда 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 (' -file') – вначале выводит диалог выбора файла.
    • 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' или 'mfig' – сохранить рисунок в двоичном fig-файле и создать m-файл для его загрузки;
      • 'mmat' – сохранить рисунок в m-файле как последовательность команд создания рисунка. Может не поддерживать новейшие графические функции.

      Команда или функция delete удаляет файл или объект графики.

      • delete имя файла удаляет файл текущей папки. Может быть использована *. Предпочтительно использование с записью в форме функции delete('mw файла'), когда имя файла – строка.
      • delete(H) удаляет графический объект с дескриптором Н. Если этот объект – окно, то оно предварительно закрывается.
      • Функция close(H) закрывает только графические окна. Для закрытия файлов необходимо использовать команду f close.

      Для записи файлов на диск служит команда save, используемая в довольно очевидных формах:

      save filename save filename var1 var2. save. option save( ' filename' . )

      Соответственно для считывания файлов с диска служит команда load:

      В этих командах имя файла указывается по правилам, принятым в операционных системах класса MS-DOS. Эти команды обычно дублируются кнопками панелей инструментов и браузером файлов.

      Какая информация доступна об этих форматах файлов? Какие инструменты доступны для анализа этих файлов?

      3 ответа

      Обновление (2015/04/02)

      В новой версии библиотеки Simulink для Java есть полная поддержка формата SLX. Документация не является явной, но исходный код содержит все подробности для ее анализа.

      Старый ответ

      Как ответил Роб, Библиотека Simulink для Java поддерживает формат файла Simulink MDL, а также может анализировать содержимое Stateflow. Библиотека с открытым исходным кодом, но единственная документация - это исходный код.

      В настоящее время (по состоянию на сентябрь 2014 г.) мы работаем над поддержкой SLX и планируем выпустить ее в ближайшие 1-2 месяца. Если вам понадобится код до этого времени, свяжитесь со мной.

      PS: Я бы опубликовал это как комментарий к ответу rob, но, похоже, у меня недостаточно репутации для этого :(

      Раскрытие информации: я являюсь одним из разработчиков упомянутой библиотеки.

      В открытом доступе очень мало информации. Вот немногое, что я нашел:

      MDL и SLX - это проприетарные форматы файлов MathWorks для хранения моделей Simulink. SLX был представлен в Simulink R2012a и сделал формат файла по умолчанию в R2012b. Помимо файловой структуры, содержимое файлов SLX и MDL очень похоже. Например, пары "ключ-значение" в двух форматах выглядят одинаковыми. Люди часто говорят, что синтаксический анализ этих файлов - плохая идея, потому что они могут меняться между версиями Simulink (см., Например, am304 и мои комментарии выше), но я не видел много доказательств этого.

      Формат MDL, похоже, был разработан внутри компании MathWorks. Похоже, был парсер MDL для python, но он имел ограниченную функциональность, а веб-сайт не работает с Май 2014.

      Файл SLX - это zip-файл, содержащий коллекцию файлов XML, при этом большая часть спецификации модели хранится в simulink/blockdiagram.xml . @ am304 указал на эту информацию с веб-сайта MathWorks.:

      • Обычно уменьшает размер файла по сравнению с MDL. Уменьшение размера файла между MDL и SLX зависит от модели.

      • Решает некоторые проблемы предыдущих выпусков с загрузкой и сохранением файлов MDL, содержащих корейские и китайские символы.

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

      Какая информация доступна об этих форматах файлов?

      В MathWorks действительно есть документация для формата файла MDL в R2007b.

      Файлы SLX представляют собой контейнеры zipfile, внутренняя структура которых основана на OOXML: //en.wikipedia.org/wiki/Open_Packaging_Conventions "rel =" nofollow "> формат OPC . Файлы SLX содержат один или несколько файлов XML, внутренняя структура которых аналогична структуре файла MDL, но в формате XML. Кроме того, двоичные ресурсы, такие как графика, могут храниться в отдельных файлах JPG, а не кодироваться текстом и напрямую вставляться, как в файл MDL.

      Оба формата меняются по мере добавления новых функций в Simulink, но можно ожидать, что SLX будет менее стабильным, поскольку MathWorks реорганизует внутреннюю файловую структуру SLX. Например, в R2014b MathWorks начал разбивать разделы традиционно монолитного blockdiagram.xml на отдельные файлы, такие как stateflow.xml и graphicalInterface.xml.

      Какие инструменты доступны для анализа этих файлов?

      Есть несколько общедоступных библиотек / API для синтаксического анализа Simulink, но я не использовал ни одну из них, поэтому не уверен, насколько хорошо они работают.

      Вы также можете найти других, выполнив поиск по синтаксическому анализатору Simulink .

      Если ни один из них не помогает, некоторые коммерческие инструменты анализируют MDL и SLX напрямую, а не полагаются на MATLAB API. Вы могли бы узнать о лицензировании парсера, используемого в каком-нибудь коммерчески доступном инструменте Simulink.

      Ошибка сохранения .mat файла в MATLAb
      Выдает ошибку при сохранении .mat файла. Подскажите что это может быть-делаю все как в книжке(скрин.

      Как открыть модель, сделанную в Matlab 2017b, в Matlab 2012b?
      Есть модель (.mdl) создана в Matlab 2017b. Как её открыть в Matlab 2012b?

      Дозапись в binary mat файл
      Привет, заранее прошу прощение, если тема создана не там. Идея такова. Имеются постоянно.

      mat - формат файла с некими данными(Числовыми или символьными)
      m - скрипт-файл, который содержит код
      и нельзя называть файлы пользователя matlab.*

      этот файл скинул преподаватель, в нем находиться текстовое описание лаб работ + код который нужно в проге вввести

      Добавлено через 26 секунд
      открыть пытаюсь через опен в меню файл

      в нем находиться текстовое описание лаб работ + код который нужно в проге вввести файлы с расширением mat прекрасно открываются из команды open (при условии соответствия версии) разрешение .mat сюда прикрепить не получается. некорректный файл что-то подобное и у меня, а по словам одногруппников там текстовка с лабораторной работой и частью кода. возможно как-то через html открыть это?

      Как открыть 3д модель в матлабе
      Создали трёхмерную модель в блендере, как её открыть в матлабе? Подскажите, очень вас прошу.


      Как открыть файлы формата edf в МАТЛАБЕ
      Здравствуйте! Есть небольшая проблема. Требуется открыть файлы формата .edf в MATLAB. Мне.

      Открыть файл *.xlsx в 0pe 0фи. Просто открыть файл
      Друзья! Вот сам файл. Создан MS Office. Он не открывался в 14-м году, он не открывается сейчас. Они.


      Открыть папку и выделить файл/открыть файл в Excel
      Привет, как программно открыть папку и выделить файл ? также как заставить Excel открыть файл ? в.

      Создание программ часто предполагает сохранение результатов расчетов в файлы для их дальнейшего анализа, обработки и хранения. В связи с этим в среде 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];

      fid=fopen('my_file.dat', 'wb');% открытие файла на запись

      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() можно осуществлять запись разнородных данных в файл в требуемом формате, в том числе и строковых переменных, что позволяет размещать в файле различные текстовые надписи.

      Читайте также: