Прочитать матрицу из файла матлаб
Функция dlmread (чтение из текстовых файлов) предназначена для чтения матриц из текстовых файлов. Первый аргумент функции – имя файла. Результат записывается в матрицу.
Вторым аргументом можно явно указать разделитель чисел в файле, например ‘,’
Чтобы узнать размер прочитанной матрицы по каждому измерению используется функция size, которая возвращает массив двух значений: количество прочитанных строк и столбцов:
Чтобы узнать общее число прочитанных чисел можно перемножив размеры матрицы, используя функцию prod
или использовать функцию numel (количество всех элементов)
Третий и четвертый аргумент dlmread смещение строки и столбца, начиная с которых нужно начинать считывать данные из файла. Например, чтобы пропустить 1 строку и один столбец, необходимо вызвать функцию со следующими дополнительными параметрами
Input Arguments
fileID — File identifier
integer
File identifier of an open text file, specified as an integer. Before reading a file with fscanf , you must use fopen to open the file and obtain the fileID .
Data Types: double
Чтение данных из Excel файлов
Для чтение данных из XLS файлов используется функция xlsread
Функция позволяет импортировать таблицы из файлов различных форматов. В отличие от результата работы функции xlsread результатом работы функции readtable является объект table, который содержит дополнительную информацию о таблице: об именах столбцов, строк. Без дополнительных указаний функция readtable считает, что в первой строке таблицы записаны имена её столбцов.
В рабочем каталоге MATLAB находится xls-файл следующего на листе “Лист1” которого находятся следующие данные:
Результатом работы функции readtable будет таблица (объект table)
Первая строка в первом столбце таблицы не содержит никаких значений (ячейка А1 пустая), поэтому первому столбцу было присвоено имя автоматически Var1. Второй и третий столбцы в таблице имеют имена COL1 и COL2 соответственно. Функция readtable рассматривает эти значения как имена столбцов. Если такое поведение функции readtable нежелательно, то можно передать функции значение ‘ReadVariableNames’ равное false
Видно, что в этом случае, поскольку столбцы исходной таблицы в таком представлении содержат неоднородные данные (и числа и строки), все значения в столбцах рассматриваются как строковые без попыток их преобразования в числовые значения. Для корректного чтения данных из таблицы ‘Книга1.xlsx’ необходимо использовать поведение функции readtable по умолчанию, т.е.
В этом случае можно получить содержимое столбца, используя его имя. Например data.COL1 представляет собой матрицу столбец
Столбец data.Var1 это матрица ячеек, содержащая строковые значения
Список имен столбцов содержится в атрибуте (свойстве) таблицы data.VariableNames, которое считывается следующим образом
Для того, чтобы значения в первом столбце рассматривались как имена строк, необходимо использовать опцию ReadRowNames
Для чтения извлечения данных из строки по её имени используется следующий синтаксис
Результатом является объект типа table. Можно извлечь несколько строк по их именам, например так
Чтобы извлечь данные в виде матрицы необходимо использовать свойство таблицы Variables
Для исходной таблицы это свойство вернет все числовые значения в виде матрицы
A = fscanf( fileID , formatSpec ) reads data from an open text file into column vector A and interprets values in the file according to the format specified by formatSpec . The fscanf function reapplies the format throughout the entire file and positions the file pointer at the end-of-file marker. If fscanf cannot match formatSpec to the data, it reads only the portion that matches and stops processing.
The text file is indicated by the file identifier, fileID . Use fopen to open the file, specify the character encoding, and obtain the fileID value. When you finish reading, close the file by calling fclose(fileID) .
A = fscanf( fileID , formatSpec , sizeA ) reads file data into an array, A , with dimensions, sizeA , and positions the file pointer after the last value read. fscanf populates A in column order. sizeA must be a positive integer or have the form [m n] , where m and n are positive integers.
[ A , count ] = fscanf( ___ ) additionally returns the number of fields that fscanf reads into A . For numeric data, this is the number of values read. You can use this syntax with any of the input arguments of the previous syntaxes.
fileID — Идентификатор файла
целое число
Идентификатор файла открытого текстового файла в виде целого числа. Прежде, чем считать файл с fscanf , необходимо использовать fopen открыть файл и получить fileID .
Типы данных: double
Read File Contents into Array
Create a sample text file that contains integers and floating-point numbers.
View the contents of the file.
Open the file for reading, and obtain the file identifier, fileID .
Define the format of the data to read and the shape of the output array.
Read the file data, filling output array, A , in column order. fscanf reuses the format, formatSpec , throughout the file.
Transpose the array so that A matches the orientation of the data in the file.
Examples
Read File Contents into Column Vector
Create a sample text file that contains floating-point numbers.
View the contents of the file.
Open the file for reading, and obtain the file identifier, fileID .
Define the format of the data to read. Use '%f' to specify floating-point numbers.
Read the file data, filling output array, A , in column order. fscanf reapplies the format, formatSpec , throughout the file.
A is a column vector containing data from the file.
Чтение содержимого файла в вектор - столбец
Создайте демонстрационный текстовый файл, который содержит числа с плавающей запятой.
Просмотрите содержимое файла.
Откройте файл для чтения и получите идентификатор файла, fileID .
Задайте формат данных, чтобы читать. Используйте '%f' задавать числа с плавающей запятой.
Считайте данные о файле, заполнив выходной массив, A , в порядке следования столбцов. fscanf повторно применяет формат, formatSpec , в файле.
A вектор-столбец, содержащий данные из файла.
Поддержка
© 1994-2021 The MathWorks, Inc.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
Чтение данных из Excel файлов
Для чтение данных из XLS файлов используется функция xlsread
Функция позволяет импортировать таблицы из файлов различных форматов. В отличие от результата работы функции xlsread результатом работы функции readtable является объект table, который содержит дополнительную информацию о таблице: об именах столбцов, строк. Без дополнительных указаний функция readtable считает, что в первой строке таблицы записаны имена её столбцов.
В рабочем каталоге MATLAB находится xls-файл следующего на листе “Лист1” которого находятся следующие данные:
Результатом работы функции readtable будет таблица (объект table)
Первая строка в первом столбце таблицы не содержит никаких значений (ячейка А1 пустая), поэтому первому столбцу было присвоено имя автоматически Var1. Второй и третий столбцы в таблице имеют имена COL1 и COL2 соответственно. Функция readtable рассматривает эти значения как имена столбцов. Если такое поведение функции readtable нежелательно, то можно передать функции значение ‘ReadVariableNames’ равное false
Видно, что в этом случае, поскольку столбцы исходной таблицы в таком представлении содержат неоднородные данные (и числа и строки), все значения в столбцах рассматриваются как строковые без попыток их преобразования в числовые значения. Для корректного чтения данных из таблицы ‘Книга1.xlsx’ необходимо использовать поведение функции readtable по умолчанию, т.е.
В этом случае можно получить содержимое столбца, используя его имя. Например data.COL1 представляет собой матрицу столбец
Столбец data.Var1 это матрица ячеек, содержащая строковые значения
Список имен столбцов содержится в атрибуте (свойстве) таблицы data.VariableNames, которое считывается следующим образом
Для того, чтобы значения в первом столбце рассматривались как имена строк, необходимо использовать опцию ReadRowNames
Для чтения извлечения данных из строки по её имени используется следующий синтаксис
Результатом является объект типа table. Можно извлечь несколько строк по их именам, например так
Чтобы извлечь данные в виде матрицы необходимо использовать свойство таблицы Variables
Для исходной таблицы это свойство вернет все числовые значения в виде матрицы
A = fscanf( fileID , formatSpec ) reads data from an open text file into column vector A and interprets values in the file according to the format specified by formatSpec . The fscanf function reapplies the format throughout the entire file and positions the file pointer at the end-of-file marker. If fscanf cannot match formatSpec to the data, it reads only the portion that matches and stops processing.
The text file is indicated by the file identifier, fileID . Use fopen to open the file, specify the character encoding, and obtain the fileID value. When you finish reading, close the file by calling fclose(fileID) .
A = fscanf( fileID , formatSpec , sizeA ) reads file data into an array, A , with dimensions, sizeA , and positions the file pointer after the last value read. fscanf populates A in column order. sizeA must be a positive integer or have the form [m n] , where m and n are positive integers.
[ A , count ] = fscanf( ___ ) additionally returns the number of fields that fscanf reads into A . For numeric data, this is the number of values read. You can use this syntax with any of the input arguments of the previous syntaxes.
fileID — File identifier
integer
File identifier of an open text file, specified as an integer. Before reading a file with fscanf , you must use fopen to open the file and obtain the fileID .
Data Types: double
Открытый пример
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Skip Specific Characters in File
Skip specific characters in a sample file, and return only numeric data.
Create a sample text file containing temperature values.
Read the numbers in the file, skipping the text, °C. Also return the number of values that fscanf reads. The extended ASCII code 176 represents the degree sign.
A is a vector containing the numeric values in the file. count indicates that fscanf read five values.
Импортирование разделенных от запятой данных
В этом примере показано, как импортировать разделенные от запятой числовые данные из текстового файла. Создайте файл примера, считайте все данные в файле, и затем только для чтения подмножество, начинающее с заданного местоположения.
Создайте файл примера под названием ph.dat это содержит разделенные от запятой данные, и отобразите содержимое файла.
Считайте файл с помощью readmatrix функция. Функция возвращает 3 - 4 double массив, содержащий данные из файла.
Импортируйте только прямоугольный фрагмент данных, начинающих с первой строки и третьего столбца в файле. Создайте, настройки импорта возражают и задают столбцы и строки, чтобы импортировать использование SelectedVariableNames и DataLines свойства. Затем импортируйте выбранный фрагмент данных из файла.
Input Arguments
Чтение содержимого файла в массив
Создайте демонстрационный текстовый файл, который содержит целые числа и числа с плавающей запятой.
Просмотрите содержимое файла.
Откройте файл для чтения и получите идентификатор файла, fileID .
Задайте формат данных, чтобы читать и форма выходного массива.
Считайте данные о файле, заполнив выходной массив, A , в порядке следования столбцов. fscanf снова использует формат, formatSpec , в файле.
Транспонируйте массив так, чтобы A совпадает с ориентацией данных в файле.
Примеры
Пропуск определенных символов в файле
Пропустите определенные символы в файле примера и возвратите только числовые данные.
Создайте демонстрационный текстовый файл, содержащий температурные значения.
Считайте числа в файле, пропустив текст, °C. Также возвратите количество значений что fscanf чтения. Расширенный код ASCII 176 представляет знак степени.
A вектор, содержащий числовые значения в файле. count указывает на тот fscanf считайте пять значений.
Импорт числовых данных из текстовых файлов в матрицу
Импортируйте числовые данные как MATLAB ® массивы из файлов, хранивших, как разделено от запятой или разделенные текстовые файлы.
Read File Contents into Column Vector
Create a sample text file that contains floating-point numbers.
View the contents of the file.
Open the file for reading, and obtain the file identifier, fileID .
Define the format of the data to read. Use '%f' to specify floating-point numbers.
Read the file data, filling output array, A , in column order. fscanf reapplies the format, formatSpec , throughout the file.
A is a column vector containing data from the file.
Read File Contents into Array
Create a sample text file that contains integers and floating-point numbers.
View the contents of the file.
Open the file for reading, and obtain the file identifier, fileID .
Define the format of the data to read and the shape of the output array.
Read the file data, filling output array, A , in column order. fscanf reuses the format, formatSpec , throughout the file.
Transpose the array so that A matches the orientation of the data in the file.
Похожие темы
formatSpec — Формат полей данных
вектор символов | строковый скаляр
Формат полей данных в файле в виде вектора символов или строкового скаляра одного или нескольких спецификаторов преобразования. Когда fscanf читает файл, он пытается совпадать с данными к формату, заданному formatSpec .
Numeric Fields
Эта таблица приводит доступные спецификаторы преобразования для числовых входных параметров. fscanf преобразует значения в их десятичное число (базируйтесь 10), представление.
Целое число, со знаком
Значения в файле определяют основу:
Значение по умолчанию основное 10.
Если начальными цифрами является 0x или 0X , затем значения являются шестнадцатеричными (базируйтесь 16).
Если начальной цифрой является 0 , затем значения являются восьмеричными (базируйтесь 8).
64-битные значения, основа 10, 8, или 16
Целое число, без знака
Базируйтесь 8 (восьмеричный)
Базируйтесь 16 (шестнадцатеричный)
64-битные значения, основа 10, 8, или 16
Число с плавающей запятой
Поля с плавающей точкой могут содержать любое из следующих (не чувствительный к регистру): Inf Inf NaN , или -NaN .
Character Fields
Эта таблица приводит доступные спецификаторы преобразования для символьных входов.
Вектор символов или строковый скаляр
Считайте все символы, исключая пробелы.
Считайте любой отдельный символ, включая пробел.
Чтобы считать несколько символов за один раз, задайте ширину поля.
Сопоставление с образцом
Символы только для чтения в скобках до первого символа несоответствия или пробела.
Пример: %[mus] чтения 'summer ' как 'summ' .
Если formatSpec содержит комбинацию числовых и символьных спецификаторов, затем fscanf преобразует каждый символ в его числовой эквивалент. Это преобразование происходит, даже когда формат явным образом пропускает все числовые значения (например, formatSpec '%*d %s' ).
Optional Operators
Поля и символы, чтобы проигнорировать
fscanf чтения все числовые значения и символы в вашем файле в последовательности, если вы не говорите ему игнорировать конкретное поле или фрагмент поля. К полям игнорируемых данных вставьте звездочку ( * ) после знака процента ( % ). Например, чтобы пропустить целые числа, задайте %*d .
Чтобы задать максимальное количество цифр или текстовых символов, чтобы читать за один раз, вставьте номер после символа процента. Например, %10c чтения до 10 символов за один раз, включая пробел. %4f чтения до 4 цифр за один раз, включая десятичную точку.
Буквенный текст, чтобы проигнорировать
fscanf игнорирует заданный текст, добавленный к formatSpec спецификатор преобразования.
Смотрите также
Импортирование разграниченных числовых данных
В этом примере показано, как импортировать числовые данные, разграниченные любым отдельным символом с помощью writematrix функция. Создайте файл примера, считайте целый файл, и затем считайте подмножество файла, запускающегося в заданном местоположении.
Создайте файл с разделением табуляцией под названием num.txt это содержит 4 - 4 числовой массив и отображение содержимое файла.
Считайте целый файл. readmatrix функция определяет разделитель автоматически и возвращает double 4 на 4 массив.
Только для чтения прямоугольный блок данных, начинающийся со второй строки, третьего столбца, в файле. Создайте, настройки импорта возражают и задают столбцы и строки, чтобы импортировать использование SelectedVariableNames и DataLines свойства. Затем импортируйте выбранный фрагмент данных из файла.
formatSpec — Format of data fields
character vector | string scalar
Format of the data fields in the file, specified as a character vector or string scalar of one or more conversion specifiers. When fscanf reads a file, it attempts to match the data to the format specified by formatSpec .
Numeric Fields
This table lists available conversion specifiers for numeric inputs. fscanf converts values to their decimal (base 10) representation.
The values in the file determine the base:
The default is base 10.
If the initial digits are 0x or 0X , then the values are hexadecimal (base 16).
If the initial digit is 0 , then values are octal (base 8).
64-bit values, base 10, 8, or 16
Base 16 (hexadecimal)
64-bit values, base 10, 8, or 16
Floating-point fields can contain any of the following (not case sensitive): Inf , -Inf , NaN , or -NaN .
Character Fields
This table lists available conversion specifiers for character inputs.
Character vector or string scalar
Read all characters excluding white spaces.
Read any single character, including white space.
To read multiple characters at a time, specify field width.
Read only characters in the brackets up to the first nonmatching character or white space.
Example: %[mus] reads 'summer ' as 'summ' .
If formatSpec contains a combination of numeric and character specifiers, then fscanf converts each character to its numeric equivalent. This conversion occurs even when the format explicitly skips all numeric values (for example, formatSpec is '%*d %s' ).
Optional Operators
Fields and Characters to Ignore
fscanf reads all numeric values and characters in your file in sequence, unless you tell it to ignore a particular field or a portion of a field. To skip fields, insert an asterisk ( * ) after the percent sign ( % ). For example, to skip integers, specify %*d .
To specify the maximum number of digits or text characters to read at a time, insert a number after the percent character. For example, %10c reads up to 10 characters at a time, including white space. %4f reads up to 4 digits at a time, including the decimal point.
Literal Text to Ignore
fscanf ignores specified text appended to the formatSpec conversion specifier.
A = fscanf( fileID , formatSpec ) считывает данные из открытого текстового файла в вектор-столбец A и интерпретирует значения в файле согласно формату, заданному formatSpec . fscanf функция повторно применяет формат в целом файле и располагает указатель файла в конце маркера. Если fscanf не может совпадать с formatSpec к данным это читает только фрагмент, который совпадает и прекращает обрабатывать.
Текстовый файл обозначается идентификатором файла, fileID Использование fopen чтобы открыть файл, задайте кодировку символов и получите fileID значение. Когда вы закончили читать, закрываете файл путем вызова fclose(fileID) .
A = fscanf( fileID , formatSpec , sizeA ) считывает данные о файле в массив, A , с размерностями, sizeA , и положения указатель файла после последнего чтения значения. fscanf заполняет A в порядке следования столбцов. sizeA должен быть положительное целое число или иметь форму [m n] , где m и n положительные целые числа.
[ A , count ] = fscanf( ___ ) дополнительно возвращает количество полей это fscanf чтения в A . Для числовых данных это - количество чтения значений. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.
Документация MATLAB
formatSpec — Format of data fields
character vector | string scalar
Format of the data fields in the file, specified as a character vector or string scalar of one or more conversion specifiers. When fscanf reads a file, it attempts to match the data to the format specified by formatSpec .
Numeric Fields
This table lists available conversion specifiers for numeric inputs. fscanf converts values to their decimal (base 10) representation.
The values in the file determine the base:
The default is base 10.
If the initial digits are 0x or 0X , then the values are hexadecimal (base 16).
If the initial digit is 0 , then values are octal (base 8).
64-bit values, base 10, 8, or 16
Base 16 (hexadecimal)
64-bit values, base 10, 8, or 16
Floating-point fields can contain any of the following (not case sensitive): Inf , -Inf , NaN , or -NaN .
Character Fields
This table lists available conversion specifiers for character inputs.
Character vector or string scalar
Read all characters excluding white spaces.
Read any single character, including white space.
To read multiple characters at a time, specify field width.
Read only characters in the brackets up to the first nonmatching character or white space.
Example: %[mus] reads 'summer ' as 'summ' .
If formatSpec contains a combination of numeric and character specifiers, then fscanf converts each character to its numeric equivalent. This conversion occurs even when the format explicitly skips all numeric values (for example, formatSpec is '%*d %s' ).
Optional Operators
Fields and Characters to Ignore
fscanf reads all numeric values and characters in your file in sequence, unless you tell it to ignore a particular field or a portion of a field. To skip fields, insert an asterisk ( * ) after the percent sign ( % ). For example, to skip integers, specify %*d .
To specify the maximum number of digits or text characters to read at a time, insert a number after the percent character. For example, %10c reads up to 10 characters at a time, including white space. %4f reads up to 4 digits at a time, including the decimal point.
Literal Text to Ignore
fscanf ignores specified text appended to the formatSpec conversion specifier.
A = fscanf( fileID , formatSpec ) reads data from an open text file into column vector A and interprets values in the file according to the format specified by formatSpec . The fscanf function reapplies the format throughout the entire file and positions the file pointer at the end-of-file marker. If fscanf cannot match formatSpec to the data, it reads only the portion that matches and stops processing.
The text file is indicated by the file identifier, fileID . Use fopen to open the file, specify the character encoding, and obtain the fileID value. When you finish reading, close the file by calling fclose(fileID) .
A = fscanf( fileID , formatSpec , sizeA ) reads file data into an array, A , with dimensions, sizeA , and positions the file pointer after the last value read. fscanf populates A in column order. sizeA must be a positive integer or have the form [m n] , where m and n are positive integers.
[ A , count ] = fscanf( ___ ) additionally returns the number of fields that fscanf reads into A . For numeric data, this is the number of values read. You can use this syntax with any of the input arguments of the previous syntaxes.
Examples
Skip Specific Characters in File
Skip specific characters in a sample file, and return only numeric data.
Create a sample text file containing temperature values.
Read the numbers in the file, skipping the text, °C. Also return the number of values that fscanf reads. The extended ASCII code 176 represents the degree sign.
A is a vector containing the numeric values in the file. count indicates that fscanf read five values.
Читайте также: