14.1.3 Простой ввод/вывод файлов
Команды save и load позволяют записывать и считывать данные из файлов на диске в различных форматах. По умолчанию формат файлов, записываемых командой save, можно контролировать с помощью функций save_default_options и save_precision.
В качестве примера, следующий код создаёт 3x3 матрицу и сохраняет её в файл ‘myfile.mat’.
A = [ 1:3; 4:6; 7:9 ]; save myfile.mat A
После сохранения одной или нескольких переменных в файл, их можно загрузить в память с помощью команды load.
load myfile.mat
A
-| A =
-|
-| 1 2 3
-| 4 5 6
-| 7 8 9 - : save file ¶
- : save options file ¶
- : save options file v1 v2 … ¶
- : save options file -struct STRUCT ¶
- : save options file -struct STRUCT f1 f2 … ¶
- : save - v1 v2 … ¶
-
: str = save ("-",
"v1","v2", …) ¶ -
Сохраняет переменные v1, v2, … в файл file.
Специальное имя файла ‘-’ может использоваться для возвращения содержимого переменных в виде строки. Если имена переменных не указаны, Octave сохраняет все переменные в текущем пространстве имён. В противном случае, полные имена переменных или синтаксис шаблонов могут использоваться для указания переменных для сохранения. Если используется модификатор -struct, то поля скалярной структуры сохраняются так, как будто это переменные с соответствующими именами полей. Опцию -struct можно комбинировать со специфическими именами полей f1, f2, … для сохранения только определённых полей в файл.
Допустимые опции для команды
saveперечислены в следующей таблице. Опции, которые изменяют формат вывода, переопределяют формат, указанныйsave_default_options.Если команда save вызвана в функциональной форме
save ("-option1", …, "file", "v1", …)то аргументы options, file и имена переменных (v1, …) должны быть указаны как строковые значения.
Если вызвана с именем файла
"-", вывод записывается в стандартный поток вывода, если nargout равно 0, в противном случае возвращает вывод в строковой переменной.-append-
Добавить в файл вместо перезаписи.
-ascii-
Сохранить матрицу в текстовом файле без заголовка или другой информации. Матрица должна быть двумерной, и только действительная часть любого комплексного значения записывается в файл. Числа хранятся в формате одинарной точности и отделяются пробелами. Дополнительные опции для формата -ascii:
-double-
Хранить числа в формате двойной точности.
-tabsРазделять числа табуляцией.
-binary-
Сохранить данные в двоичном формате Octave.
-float-binary-
Сохранить данные в двоичном формате Octave, но используя только одинарную точность. Используйте этот формат только если вы знаете, что все сохраняемые значения могут быть представлены в формате одинарной точности.
-hdf5-
Сохранить данные в формате HDF5. (HDF5 — свободный, переносимый двоичный формат, разработанный Национальным центром супервычислений в Университете Иллинойса.) Этот формат доступен только если Octave был скомпилирован с подключением к библиотекам HDF5.
-float-hdf5-
Сохранить данные в формате HDF5, но используя только одинарную точность. Используйте этот формат только если вы знаете, что все сохраняемые значения могут быть представлены в формате одинарной точности.
-text-
Сохранить данные в текстовом формате Octave (по умолчанию).
-v7.3-V7.3-7.3-
Octave ещё не реализовал двоичный формат данных MATLAB v7.3.
-v7-V7-7-mat7-binary-
Сохранить данные в двоичном формате данных MATLAB v7.
-v6-V6-6-mat-mat-binary-
Сохранить данные в двоичном формате данных MATLAB v6.
-v4-V4-4-mat4-binary-
Сохранить данные в двоичном формате данных MATLAB v4.
-zip-zИспользовать алгоритм gzip для сжатия файла. Это работает с файлами, сжатыми gzip вне Octave, и gzip также может быть использован для преобразования файлов для обратной совместимости. Эта опция доступна только если Octave был скомпилирован с подключением к библиотекам zlib.
Список переменных для сохранения может использовать шаблоны с подстановкой (шаблоны glob), содержащие следующие специальные символы:
?-
Соответствие любому символу.
*-
Соответствие нулю или более символам.
[ list ]-
Соответствие списку символов, указанному в list. Если первый символ
!или^, соответствие всем символам, кроме тех, которые указаны в list. Например, шаблон[a-zA-Z]соответствует всем прописным и строчным буквенным символам.Шаблоны могут также использоваться в спецификациях имён полей при использовании модификатора -struct (но не в самом имени структуры).
За исключением использования двоичного формата файлов MATLAB или формата ‘-ascii’, сохранение глобальных переменных также сохраняет глобальный статус переменной. Если переменная восстанавливается позже с помощью ‘load’, она будет восстановлена как глобальная переменная.
Пример:
Команда
save -binary data a b*
сохраняет переменную ‘a’ и все переменные, начинающиеся с ‘b’, в файл data в двоичном формате Octave.
См. также: load, save_default_options, save_header_format_string, save_precision, dlmread, csvread, fread.
Есть три функции, которые изменяют поведение save.
- : val = save_default_options () ¶
- : old_val = save_default_options (new_val) ¶
- : old_val = save_default_options (new_val, "local") ¶
-
Запрос или установка внутренней переменной, которая определяет опции по умолчанию для команды
save, и определяет формат по умолчанию.Значение по умолчанию —
"-text"(собственный текстовый формат файлов Octave). См. документацию командыsaveдля других вариантов.При вызове изнутри функции с опцией
"local", переменная изменяется локально для функции и любых вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: save, save_header_format_string, save_precision.
- : val = save_precision () ¶
- : old_val = save_precision (new_val) ¶
- : old_val = save_precision (new_val, "local") ¶
-
Запрос или установка внутренней переменной, которая определяет количество цифр для сохранения при сохранении данных в текстовом формате.
Значение по умолчанию — 17, которое является минимальным необходимым значением для безошибочного сохранения и восстановления значений с плавающей точкой IEEE-754 двойной точности; для значений с плавающей точкой IEEE-754 одинарной точности минимальное значение — 9. Если размер файла важен, то, вероятно, лучше выбрать двоичный формат для сохранения данных, чем уменьшить точность сохраняемых значений.
При вызове изнутри функции с опцией
"local", переменная изменяется локально для функции и любых вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: save_default_options.
- : val = save_header_format_string () ¶
- : old_val = save_header_format_string (new_val) ¶
- : old_val = save_header_format_string (new_val, "local") ¶
-
Получение или установка внутренней переменной, определяющей строку формата, используемую для строки комментария, записанной в начале текстовых данных, сохраненных в Octave.
Строка формата передается в
strftimeи должна начинаться с символа ‘#’ и не содержать символов новой строки. Если значениеsave_header_format_string— пустая строка, то строка заголовка опускается из текстовых файлов данных. Значение по умолчанию —"# Created by Octave VERSION, %a %b %d %H:%M:%S %Y %Z <USER@HOST>"
При вызове изнутри функции с опцией
"local", переменная изменяется локально для функции и любых вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: strftime, save_default_options.
- : load file ¶
- : load options file ¶
- : load options file v1 v2 … ¶
- : S = load ("options", "file", "v1", "v2", …) ¶
- : load file options ¶
- : load file options v1 v2 … ¶
- : S = load ("file", "options", "v1", "v2", …) ¶
-
Загрузка указанных переменных v1, v2, …, из файла file.
Если переменные не указаны, будут загружены все переменные, найденные в файле. Как и в случае с
save, список переменных для извлечения может содержать полные имена или использовать синтаксис шаблонов. Формат файла автоматически определяется, но может быть изменён с помощью соответствующей опции.Если функция load вызывается в функциональной форме
load ("-option1", …, "file", "v1", …)то аргументы options, file и имена переменных (v1, …) должны быть указаны в виде строк.
Если переменная, не помеченная как глобальная, загружается из файла, когда глобальная переменная с тем же именем уже существует, она загружается в глобальную таблицу символов. Также, если переменная помечена как глобальная в файле, а локальный символ существует, локальный символ перемещается в глобальную таблицу символов и получает значение из файла.
При вызове с одним аргументом вывода Octave возвращает данные вместо вставки переменных в таблицу символов. Если файл данных содержит только числа (разделенные табуляцией или пробелами столбцы), возвращается матрица значений. В противном случае
loadвозвращает структуру с членами, соответствующими именам переменных в файле.Команда
loadможет читать данные, сохранённые в текстовых и двоичных форматах Octave, а также в двоичном формате MATLAB. При компиляции с поддержкой zlib она также может загружать сжатые gzip файлы. Она автоматически определяет тип файла и выполняет преобразование из различных форматов чисел с плавающей точкой (в настоящее время только IEEE big и little endian, хотя в будущем могут быть добавлены и другие форматы).Список допустимых опций для
loadприведен в следующей таблице.-force-
Эта опция принимается для обратной совместимости, но игнорируется. Сейчас Octave перезаписывает переменные в памяти переменными с таким же именем, найденными в файле.
-ascii-
Принудительно заставляет Octave считать, что файл содержит столбцы чисел в текстовом формате без заголовков или другой информации. Данные из файла будут загружены как единая числовая матрица с именем переменной, полученной из имени файла.
-binary-
Принудительно заставляет Octave считать, что файл находится в двоичном формате Octave.
-hdf5-
Принудительно заставляет Octave считать, что файл в формате HDF5. (HDF5 — свободный, переносимый двоичный формат, разработанный Национальным центром супервычислений в Университете Иллинойса.) Обратите внимание, что Octave может читать только файлы HDF5, созданные им самим с помощью
save. Этот формат доступен только если Octave был скомпилирован с ссылкой на библиотеки HDF5. -import-
Эта опция принимается для обратной совместимости, но игнорируется. Octave теперь может поддерживать многомерные данные HDF и автоматически изменяет имена переменных, если они не являются допустимыми идентификаторами Octave.
-text-
Принудительно заставляет Octave считать, что файл находится в текстовом формате Octave.
-v7.3-V7.3-7.3-
Octave не реализует ещё двоичный формат данных MATLAB v7.3.
-v7-V7-7-mat7-binary-
Принудительно заставляет Octave считать, что файл находится в двоичном формате MATLAB версии 7.
-v6-V6-6-mat-mat-binary-
Принудительно заставляет Octave считать, что файл находится в двоичном формате MATLAB версии 6.
-v4-V4-4-mat4-binary-
Принудительно заставляет Octave считать, что файл находится в двоичном формате MATLAB версии 4.
- : str = fileread (filename) ¶
-
Чтение содержимого файла filename и возврат его в виде строки.
См. также: fread, fscanf, importdata, textscan, type.
- : fmtstr = native_float_format () ¶
Возвращает строковое представление формата чисел с плавающей точкой по умолчанию.
Возможно записать данные в файл аналогично функции disp для вывода данных на экран. Функция fdisp работает так же, как disp, за исключением того, что ее первый аргумент — указатель на файл, созданный с помощью fopen. В качестве примера, следующий код записывает в файл ‘myfile.txt’.
fid = fopen ("myfile.txt", "w");
fdisp (fid, "3/8 is ");
fdisp (fid, 3/8);
fclose (fid); Подробности об использовании fopen и fclose см. в разделе Открытие и закрытие файлов.
- : fdisp (fid, x) ¶
-
Вывод значения x в поток fid.
Например:
fdisp (stdout, "The value of pi is:"), fdisp (stdout, pi) -| the value of pi is: -| 3.1416Обратите внимание, что вывод из
fdispвсегда заканчивается символом новой строки.См. также: disp.
Octave также может читать и записывать матрицы в текстовые файлы, такие как CSV-файлы.
- : dlmwrite (file, M) ¶
- : dlmwrite (file, M, delim, r, c) ¶
- : dlmwrite (file, M, key, val …) ¶
- : dlmwrite (file, M, "-append", …) ¶
- : dlmwrite (fid, …) ¶
-
Запишите числовую матрицу M в текстовый файл file с использованием разделителя.
file должен быть именем файла или идентификатором записываемого файла, заданным с помощью
fopen.Параметр delim задаёт разделитель для разделения значений в строке. Если разделитель не указан, используется запятая ‘,’.
Значение r задаёт количество только разделительных строк, добавляемых в начало файла.
Значение c задаёт количество разделителей, добавляемых перед каждой строкой данных.
Если задан аргумент
"-append", допишите данные в конец файла file.Кроме того, в конце списка аргументов могут появиться следующие пары «ключ-значение»:
"append"-
Либо
"on", либо"off". См."-append"выше. "delimiter"-
См. delim выше.
"newline"-
Символ(ы) для разделения строк. Существуют три специальных случая для этого параметра.
"unix"заменяется на"\n","pc"на"\r\n", а"mac"на"\r". Любое другое значение используется непосредственно в качестве разделителя строк. "roffset"-
См. r выше.
"coffset"-
См. c выше.
"precision"Точность, используемая при записи файла. Это может быть строка формата (как используется в fprintf) или количество значащих цифр.
dlmwrite ("file.csv", reshape (1:16, 4, 4));dlmwrite ("file.tex", a, "delimiter", "&", "newline", "\n")
- : data = dlmread (file) ¶
- : data = dlmread (file, sep) ¶
- : data = dlmread (file, sep, r0, c0) ¶
- : data = dlmread (file, sep, range) ¶
- : data = dlmread (…, "emptyvalue", EMPTYVAL) ¶
-
Прочитать числовые данные из текстового файла file, который использует разделитель sep между значениями данных.
Если sep не определён, разделитель между полями определяется из самого файла.
Необязательные скалярные аргументы r0 и c0 определяют начальную строку и столбец считываемых данных. Эти значения индексируются с нуля, т.е. первая строка данных соответствует индексу ноль.
Параметр range задаёт то, какие элементы данных будут прочитаны. Первый вид параметра — 4-элементный вектор, содержащий верхний левый и нижний правый углы
[R0,C0,R1,C1], где индексы начинаются с нуля. Чтобы указать последний столбец — эквивалентendпри индексировании — используйте спецификаторInf. В качестве альтернативы можно использовать формат типа электронных таблиц, например,"A2..Q15"или"T1:AA5". Самый низкий алфавитный индекс'A'относится к первому столбцу. Наименьший индекс строки — 1.file должен быть именем файла или идентификатором файла, заданным
fopen. В последнем случае файл читается до конца файла.Опция
"emptyvalue"может быть использована для задания значения, используемого для заполнения пустых полей. По умолчанию это ноль. Обратите внимание, что любые нечисловые значения, такие как текст, также заменяются на"emptyvalue".
- : csvwrite (filename, x) ¶
- : csvwrite (filename, x, dlm_opt1, …) ¶
-
Записать числовую матрицу x в файл filename в формате разделенных запятыми значений (CSV).
Эта функция эквивалентна
dlmwrite (filename, x, ",", dlm_opt1, …)
Любые необязательные аргументы передаются непосредственно в
dlmwrite(см.dlmwrite).
- : x = csvread (filename) ¶
- : x = csvread (filename, dlm_opt1, …) ¶
-
Прочитать файл с разделителями запятыми (CSV) filename в матрицу x.
Примечание: можно читать только CSV-файлы, содержащие числовые данные.
Эта функция эквивалентна
x = dlmread (filename, "," , dlm_opt1, …)
Любые необязательные аргументы передаются непосредственно в
dlmread(см.dlmread).
Форматированные данные также можно читать из или записывать в текстовые файлы.
- : [a, …] = textread (filename) ¶
- : [a, …] = textread (filename, format) ¶
- : [a, …] = textread (filename, format, n) ¶
- : [a, …] = textread (filename, format, prop1, value1, …) ¶
- : [a, …] = textread (filename, format, n, prop1, value1, …) ¶
-
Эта функция устарела. Используйте
textscanвместо неё.Чтение данных из текстового файла.
Файл filename читается и анализируется в соответствии с format. Функция ведет себя как
strread, за исключением того, что работает с анализом файла вместо строки. Подробности см. в документации поstrread.Помимо опций, поддерживаемых
strread, эта функция поддерживает ещё две:-
"headerlines": Первые value строк filename пропускаются. -
"endofline": Укажите один символ или"\r\n". Если значение не задано, оно будет выведено из файла. Если значение установлено в""(пустая строка), EOL игнорируются как разделители.
Необязательный входной параметр n (номер повторения формата) указывает количество раз, которое строка формата должна быть использована, или количество строк, которые должны быть прочитаны, что произойдёт первым во время чтения. Первый эквивалентен требованию, чтобы векторы выходных данных имели длину N. Обратите внимание, что при чтении файлов со строками формата, ссылающимися на несколько строк, n должен скорее представлять количество строк, которые должны быть прочитаны, а не количество применений строки формата.
Если строка формата пустая (не просто пропущена), а файл содержит только числовые данные (без заголовков), textread вернёт прямоугольную матрицу с количеством столбцов, соответствующим количеству числовых полей в первой строке данных файла. Пустые поля возвращаются как нулевые значения.
Примеры:
Assume a data file like: 1 a 2 b 3 c 4 d 5 e
[a, b] = textread (f, "%f %s") returns two columns of data, one with doubles, the other a cellstr array: a = [1; 2; 3; 4; 5] b = {"a"; "b"; "c"; "d"; "e"}[a, b] = textread (f, "%f %s", 3) (read data into two culumns, try to use the format string three times) returns a = [1; 2; 3] b = {"a"; "b"; "c"}With a data file like: 1 a 2 b [a, b] = textread (f, "%f %s", 2) returns a = 1 and b = {"a"}; i.e., the format string is used only once because the format string refers to 2 lines of the data file. To obtain 2x1 data output columns, specify N = 4 (number of data lines containing all requested data) rather than 2. -
-
Считывание данных из текстового файла или строки.
Строка str или файл, связанный с fid, считывается и анализируется в соответствии с format. Функция является расширением
strreadиtextread. Отличия включают возможность считывания из файла или строки, дополнительные параметры и дополнительные спецификаторы формата.Вход интерпретируется как последовательность слов, разделителей (таких как пробелы) и литералов. Символы, образующие разделители и пробелы, определяются параметрами. Формат состоит из спецификаторов формата, перемежающихся между литералами. В формате пробелы образуют разделитель между последовательными литералами, но в остальном игнорируются.
Вывод C — это ячейный массив, где количество столбцов определяется количеством спецификаторов формата.
Первое слово входных данных сопоставляется с первым спецификатором формата и помещается в первый столбец вывода; второе сопоставляется со вторым спецификатором и помещается во второй столбец и так далее. Если слов больше, чем спецификаторов, то процесс повторяется до тех пор, пока все слова не будут обработаны или не будет достигнуто ограничение, наложенное repeat (см. ниже).
Строка format описывает, как должны анализироваться слова в str. Как и в fscanf, любой (непробельный) текст в формате, который не является одним из этих спецификаторов, считается литералом. Если между двумя спецификаторами формата есть литерал, то тот же литерал должен присутствовать в входном потоке между соответствующими словами.
Следующие спецификаторы допустимы:
%f%f64%n-
Слово анализируется как число и преобразуется в double.
%f32-
Слово анализируется как число и преобразуется в single (float).
%d%d8%d16%d32%d64-
Слово анализируется как число и преобразуется в int8, int16, int32 или int64. Если размер не указан, используется int32.
%u%u8%u16%u32%u64-
Слово анализируется как число и преобразуется в uint8, uint16, uint32 или uint64. Если размер не указан, используется uint32.
%s-
Слово анализируется как строка, заканчивающаяся последним символом перед пробелом, концом строки или разделителем, указанным в параметрах.
%q-
Слово анализируется как «строка в кавычках». Если первый символ строки — двойная кавычка ("), то строка включает все символы до соответствующей двойной кавычки — включая пробелы, разделители и символы конца строки. Если пара последовательных двойных кавычек появляется во входных данных, она заменяется в выводе одной двойной кавычкой. Например, входные данные "Он сказал ""Привет""" вернут значение ’Он сказал "Привет"’.
%c-
Считывается следующий символ входных данных. Это включает разделители, пробелы и символы конца строки.
%[…]%[^…]-
В первом варианте слово состоит из самой длинной последовательности, состоящей только из символов между скобками. Диапазоны символов могут быть указаны дефисом; например, %[0-9a-zA-Z] соответствует всем буквенно-цифровым символам (если базовое кодирование символов — ASCII). Поскольку MATLAB обрабатывает дефисы буквально, это расширение применяется только к буквенно-цифровым символам. Чтобы включить ’-’ в набор, он должен появляться первым или последним в скобках; чтобы включить ’]’, он должен быть первым символом. Если первым символом является ’^’, то слово состоит из символов, не перечисленных.
%N…-
Для %s, %c, %d, %f, %n, %u можно указать необязательную ширину, например, %Ns, где N — целое число > 1. Для %c это приводит к чтению ровно N символов вместо одного. Для других спецификаторов это верхняя граница количества считываемых символов; обычные разделители могут привести к чтению меньшего количества символов. Для комплексных чисел это ограничение применяется к вещественной и мнимой частям по отдельности. Для %f и %n разрешены спецификаторы формата, такие как %N.Mf, где M — верхняя граница числа символов после десятичной точки, которые следует учитывать; последующие цифры пропускаются. Например, спецификатор %8.2f прочитает 12.345e6 как 1.234e7.
%*…-
Слово, заданное остальной частью спецификатора преобразования, пропускается.
literalsКроме того, формат может содержать литеральные строковые значения; они будут пропущены во время чтения. Если входная строка не соответствует этому литералу, обработка завершается.
Слова, проанализированные в соответствии с первым спецификатором, возвращаются в первом выходном аргументе, и так же для остальных спецификаторов.
По умолчанию, если существует только один входной аргумент, format равен "%f". Это означает, что числа считываются из ввода в вектор-столбец. Если format явно пустой (
""), то textscan вернет данные в количестве столбцов, соответствующем количеству полей в первой строке данных входных данных. Любой из этих вариантов подходит только в том случае, если входные данные исключительно числовые.Например, строка
str = "\ Bunny Bugs 5.5\n\ Duck Daffy -7.5e-5\n\ Penguin Tux 6"
может быть прочитана с помощью
a = textscan (str, "%s %s %f");
Необязательный числовой аргумент repeat можно использовать для ограничения количества считываемых элементов:
- -1
-
Считывание всей строки или файла до конца (по умолчанию).
- N
Считывание до тех пор, пока не произойдет одно из двух условий: 1) формат был обработан N раз или 2) N строк входных данных были обработаны. Ноль (0) является допустимым значением для repeat. В настоящее время символы конца строки внутри %q, %c и %[…]$ преобразований не учитываются при подсчете строк. Это несовместимо с MATLAB и может быть изменено в будущем.
Поведение
textscanможет быть изменено с помощью пар свойство/значение. Признаются следующие свойства:"BufSize"-
Это указывает количество байтов, используемых для внутреннего буфера. Незначительное повышение скорости может быть получено, установив это значение в большое значение при чтении большого файла, особенно если входные данные содержат длинные строки. По умолчанию используется 4096 или значение, зависящее от n, если оно указано.
"CollectOutput"-
Значение 1 или true инструктирует
textscanконкатенировать последовательные столбцы одного и того же типа в выходном ячейном массиве. Значение 0 или false (по умолчанию) оставляет вывод в отдельных столбцах. "CommentStyle"-
Укажите части входных данных, которые считаются комментариями и будут пропущены. value — стиль комментария и может быть либо (1) строкой или строкой 1x1, чтобы пропустить все справа от нее; (2) ячейным массивом из двух строк, чтобы пропустить все между первой и второй строками. Комментарии анализируются только там, где принимаются пробелы, и не действуют как разделители.
"Delimiter"-
Если value — строка, любой символ в value будет использоваться для разделения входных данных на слова. Если value — ячейный массив строк, любая строка в массиве будет использоваться для разделения входных данных на слова. (Значение по умолчанию — любой пробел.)
"EmptyValue"-
Значение, возвращаемое для пустых числовых значений в данных, неразделенных пробелами. По умолчанию — NaN. Когда тип данных не поддерживает NaN (например, int32), по умолчанию используется ноль.
"EndOfLine"-
value может быть либо пустой, либо односимвольной строкой, определяющей символ конца строки, или парой
"\r\n"(CRLF). В последнем случае любой из"\r","\n"или"\r\n"считается (одним) символом новой строки. Если значение не указано, используется"\r\n". "HeaderLines"-
Первые value строк fid пропускаются. Обратите внимание, что это не относится к первым строкам без комментариев, а к первым строкам любого типа.
"MultipleDelimsAsOne"-
Если value не равно нулю, последовательность разделителей без пробелов между ними рассматривается как один разделитель. Последовательности разделителей не обязательно должны быть вертикально выровнены. Без этого параметра одиночный разделитель перед концом строки не заставляет строку считаться завершающейся пустым значением, но одиночный разделитель в начале строки заставляет строку считаться начинающейся с пустого значения.
"TreatAsEmpty"-
Единичные появления (окруженные разделителями или пробелами) строки(строк) в value рассматриваются как пропущенные значения.
"ReturnOnError"-
Если установлено в числовое 1 или true, возвращается значение по умолчанию, как только обнаруживается ошибка, например, при попытке чтения строки с помощью
%f. Если установлено в 0 или false, возвращается ошибка и данные не возвращаются. "Whitespace"-
Любой символ в value будет интерпретироваться как пробел и обрезаться; значение по умолчанию для пробелов —
" \b\r\n\t"(обратите внимание на пробел). Если пробелы установлены на""(пустое) И по крайней мере один"%s"спецификатор преобразования формата, пробел всегда является частью пробелов.
Когда количество слов в str или fid не соответствует точному кратному количеству спецификаторов преобразования формата, поведение
textscanзависит от того, является ли последний символ строки или файла символом конца строки, как указано в параметреEndOfLine:- последний символ = символ конца строки
-
Столбцы данных дополняются пустыми полями, NaN или 0 (для целочисленных полей), чтобы все столбцы имели одинаковую длину.
- последний символ не является символом конца строки
Столбцы данных не дополняются;
textscanвозвращает столбцы с неодинаковой длиной.
Второй выход position предоставляет положение, в символах от начала файла или строки, где обработка была остановлена.
Функция importdata имеет возможность работать с широким спектром данных.
- : A = importdata (fname) ¶
- : A = importdata (fname, delimiter) ¶
- : A = importdata (fname, delimiter, header_rows) ¶
- : [A, delimiter] = importdata (…) ¶
- : [A, delimiter, header_rows] = importdata (…) ¶
-
Импортировать данные из файла fname.
Входные параметры:
- fname Название файла, содержащего данные.
- delimiter Символ, разделяющий столбцы данных. Используйте
\tдля табуляции. (Действительно только для ASCII-файлов) - header_rows Количество строк заголовка перед началом данных. (Действительно только для ASCII-файлов)
Поддерживаются различные типы файлов:
- ASCII-таблица
Импортировать ASCII-таблицу, используя указанное количество строк заголовка и указанный разделитель.
- Файл изображения
- Файл MATLAB
- Файлы электронных таблиц (в зависимости от внешнего программного обеспечения)
- WAV-файл
После импорта данные могут потребоваться преобразовать перед дальнейшим анализом. Функция rescale может сдвигать и нормализовывать набор данных до заданного диапазона.
- : B = rescale (A) ¶
- : B = rescale (A, l, u) ¶
- : B = rescale (…, "inputmin", inmin) ¶
- : B = rescale (…, "inputmax", inmax) ¶
-
Масштабирование элементов матрицы до заданного диапазона значений.
При вызове с единственным аргументом матрицы A, элементы масштабируются в интервал [0, 1].
Дополнительные входные данные
[l, u]масштабируют A до интервала с нижней границей l и верхней границей u.Дополнительный вход
"inputmin"заменяет все элементы, меньшие указанного значения inmin, на inmin. Аналогично, дополнительный вход"inputmax"заменяет все элементы, большие указанного значения inmax, на inmax. Если не указано, минимальное и максимальное значения берутся из самих данных (inmin = min (A(:))иinmax = max (A(:))).Заметки по программированию: Применяемая формула:
B = l + ((A - inmin) ./ (inmax - inmin)) .* (u - l)
Класс выходной матрицы B — single, если вход A — single, в противном случае — double для входов типа double, integer или logical.
© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v8.1.0/Simple-File-I_002fO.html