目录
readmatrix是从文件中读取矩阵。
语法
A = readmatrix(filename)
A = readmatrix(filename,opts)
A = readmatrix(___,Name,Value)
说明
A = readmatrix(filename)
通过从文件中读取列向数据来创建数组。readmatrix
函数可自动检测文件的导入参数。
readmatrix
基于文件的扩展名确定文件格式:
-
.txt
、.dat
或.csv
(适用于带分隔符的文本文件) -
.xls
、.xlsb
、.xlsm
、.xlsx
、.xltm
、.xltx
或.ods
(适用于电子表格文件)
对于包含数值和文本混合数据的文件,默认情况下,readmatrix
将数据作为数值数组导入。
A = readmatrix(filename,opts)
还使用导入选项opts
。
A = readmatrix(___,Name,Value)
基于文件创建一个数组,并通过一个或多个名称-值对组参数指定其他选项。您需要在上述语法的输入参数之后指定名称-值对组。
要为数据设置特定的导入选项,可以使用 opts
对象,也可以指定名称-值对组。当指定除 opts
之外的名称-值对组时,readmatrix
仅支持下列名称-值对组:
-
文本文件 -
DateLocale
、Encoding
-
电子表格文件 -
Sheet
、UseExcel
示例
从文本文件中读取矩阵
显示 basic_matrix.txt
的内容,然后将数据导入矩阵。
type basic_matrix.txt
6,8,3,1
5,4,7,3
1,6,7,10
4,2,8,2
2,7,5,9
M = readmatrix('basic_matrix.txt')
M = 5×4
6 8 3 1
5 4 7 3
1 6 7 10
4 2 8 2
2 7 5 9
从电子表格文件中读取矩阵
将数值数据从 basic_matrix.xls
导入矩阵。
M = readmatrix('basic_matrix.xls')
M = 5×4
6 8 3 1
5 4 7 3
1 6 7 10
4 2 8 2
2 7 5 9
使用导入选项从指定的工作表和范围中读取矩阵
预览电子表格文件中的数据,并以矩阵形式从指定的工作表和范围中导入数值数据。电子表格文件 airlinesmall_subset.xlsx
包含 1996 年至 2008 年间多个工作表中的数据。每个工作表都包含给定年份的数据。预览文件 airlinesmall_subset.xlsx
中的数据。默认情况下,preview
函数显示第一个工作表中的数据。文件中的前八个变量包含数值数据。
opts = detectImportOptions('airlinesmall_subset.xlsx');
preview('airlinesmall_subset.xlsx',opts)
ans=8×29 table
Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode Diverted CarrierDelay WeatherDelay SDelay SecurityDelay LateAircraftDelay
____ _____ __________ _________ _______ __________ _______ __________ _____________ _________ __________ _________________ ______________ _______ ________ ________ _______ _______ ________ ______ _______ _________ ________________ ________ ____________ ____________ __________ _____________ _________________
1996 1 18 4 2117 2120 2305 2259 {'HP'} 415 {'N637AW'} 108 99 85 6 -3 {'COS'} {'PHX'} 551 5 18 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 12 5 1252 1245 1511 1500 {'HP'} 610 {'N905AW'} 79 75 58 11 7 {'LAX'} {'PHX'} 370 3 18 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 16 2 1441 1445 1708 1721 {'HP'} 211 {'N165AW'} 87 96 74 -13 -4 {'RNO'} {'PHX'} 601 4 9 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 1 1 2258 2300 2336 2335 {'HP'} 1245 {'N183AW'} 38 35 20 1 -2 {'TUS'} {'PHX'} 110 6 12 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 4 4 1814 1814 1901 1910 {'US'} 683 {'N963VJ'} 47 56 34 -9 0 {'DTW'} {'PIT'} 201 6 7 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 31 3 1822 1820 1934 1925 {'US'} 757 {'N912VJ'} 72 65 52 9 2 {'PHL'} {'PIT'} 267 6 14 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 18 4 729 730 841 843 {'US'} 1564 {'N941VJ'} 72 73 58 -2 -1 {'DCA'} {'PVD'} 357 3 11 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 26 5 1704 1705 1829 1839 {'NW'} 1538 {'N960N' } 85 94 69 -10 -1 {'DTW'} {'RIC'} 456 3 13 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
配置 opts 对象中的值,以便从名为 '2007'
的工作表中导入前五个变量的 10
行。
opts.Sheet = '2007';
opts.SelectedVariableNames = [1:5];
opts.DataRange = '2:11';
M = readmatrix('airlinesmall_subset.xlsx',opts)
M = 10×5
2007 1 2 2 711
2007 1 3 3 652
2007 1 4 4 1116
2007 1 5 5 825
2007 1 7 7 1411
2007 1 8 1 1935
2007 1 9 2 2005
2007 1 11 4 1525
2007 1 12 5 1133
2007 1 13 6 922
从指定的工作表和范围中读取矩阵
预览电子表格文件中的数据,并以矩阵形式从指定的工作表和范围中导入数值数据。电子表格文件 airlinesmall_subset.xlsx
包含 1996 年至 2008 年间多个工作表中的数据。每个工作表都包含给定年份的数据。预览文件 airlinesmall_subset.xlsx
中的数据。默认情况下,preview
函数显示第一个工作表中的数据。文件中的前八个变量包含数值数据。
opts = detectImportOptions('airlinesmall_subset.xlsx');
preview('airlinesmall_subset.xlsx',opts)
ans=8×29 table
Year Month DayofMonth DayOfWeek DepTime CRSDepTime ArrTime CRSArrTime UniqueCarrier FlightNum TailNum ActualElapsedTime CRSElapsedTime AirTime ArrDelay DepDelay Origin Dest Distance TaxiIn TaxiOut Cancelled CancellationCode Diverted CarrierDelay WeatherDelay SDelay SecurityDelay LateAircraftDelay
____ _____ __________ _________ _______ __________ _______ __________ _____________ _________ __________ _________________ ______________ _______ ________ ________ _______ _______ ________ ______ _______ _________ ________________ ________ ____________ ____________ __________ _____________ _________________
1996 1 18 4 2117 2120 2305 2259 {'HP'} 415 {'N637AW'} 108 99 85 6 -3 {'COS'} {'PHX'} 551 5 18 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 12 5 1252 1245 1511 1500 {'HP'} 610 {'N905AW'} 79 75 58 11 7 {'LAX'} {'PHX'} 370 3 18 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 16 2 1441 1445 1708 1721 {'HP'} 211 {'N165AW'} 87 96 74 -13 -4 {'RNO'} {'PHX'} 601 4 9 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 1 1 2258 2300 2336 2335 {'HP'} 1245 {'N183AW'} 38 35 20 1 -2 {'TUS'} {'PHX'} 110 6 12 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 4 4 1814 1814 1901 1910 {'US'} 683 {'N963VJ'} 47 56 34 -9 0 {'DTW'} {'PIT'} 201 6 7 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 31 3 1822 1820 1934 1925 {'US'} 757 {'N912VJ'} 72 65 52 9 2 {'PHL'} {'PIT'} 267 6 14 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 18 4 729 730 841 843 {'US'} 1564 {'N941VJ'} 72 73 58 -2 -1 {'DCA'} {'PVD'} 357 3 11 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
1996 1 26 5 1704 1705 1829 1839 {'NW'} 1538 {'N960N' } 85 94 69 -10 -1 {'DTW'} {'RIC'} 456 3 13 0 {0x0 char} 0 {0x0 char} {0x0 char} {0x0 char} {0x0 char} {0x0 char}
从名为 '2007'
的工作表中导入前 5
个变量的 10
行。
M = readmatrix('airlinesmall_subset.xlsx','Sheet','2007','Range','A2:E11')
M = 10×5
2007 1 2 2 711
2007 1 3 3 652
2007 1 4 4 1116
2007 1 5 5 825
2007 1 7 7 1411
2007 1 8 1 1935
2007 1 9 2 2005
2007 1 11 4 1525
2007 1 12 5 1133
2007 1 13 6 922
输入参数
filename
- 要读取的文件的名称
字符向量 | 字符串标量
要读取的文件的名称,指定为字符向量或字符串标量。根据文件的位置,filename
可以采用下列形式之一。
位置 |
形式 |
||||||||
---|---|---|---|---|---|---|---|---|---|
当前文件夹或 MATLAB® 路径上的文件夹 | 指定 示例: |
||||||||
文件夹中的文件 |
如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则在 示例: 示例: |
||||||||
远程位置 |
如果文件存储在远程位置,则
根据远程位置,
有关详细信息,参考处理远程数据。 示例: |
-
如果
filename
包含文件扩展名,则导入函数基于扩展名确定文件格式。否则,必须指定'FileType'
名称-值对组参数以指示文件类型。 -
在安装了 Microsoft® Excel® 软件的 Windows® 系统上,导入函数读取您的 Excel 版本可识别的任何 Excel 电子表格文件格式。
-
如果系统没有 Windows 版 Excel 或者您正在使用 MATLAB Online™,则导入函数在
UseExcel
属性设置为false
的情况下运行,并且只读取.xls, .xlsx, .xlsm, .xltx, and .xltm
文件。 -
对于分隔的文本文件,导入函数将文件中的空字段转换为
NaN
(对于数值变量)或空字符向量(对于文本变量)。文本文件中的所有行必须有相同数量的分隔符。导入函数会忽略文件中的无用空白。
数据类型: char
| string
opts
- 文件导入选项SpreadsheetImportOptions
|DelimitedtextImportOptions
|FixedWidthImportOptions
文件导入选项,指定为detectImportOptions 函数创建的 SpreadsheetImportOptions
、DelimitedTextImportOptions
或 FixedWidthImportOptions
对象。opts
对象包含控制数据导入过程的属性。有关每个对象的属性的详细信息,请参阅相应的对象页。
文件类型 | 输出 |
---|---|
电子表格文件 | SpreadsheetImportOptions 对象 |
文本文件 |
DelimitedTextImportOptions 对象 |
等宽文本文件 |
FixedWidthImportOptions 对象 |
名称-值对组参数
指定可选的、以逗号分隔的 Name,Value
对组参数。Name
为参数名称,Value
为对应的值。Name
必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN
所示。
示例: 'NumHeaderLines',5
表示表格数据前面的前五行是标题行。文本和电子表格文件
'FileType'
- 文件类型'text'
|'spreadsheet'
文件类型,以逗号分隔的对组形式指定,其中包含 'FileType'
以及 'text'
或 'spreadsheet'
。
当 filename
不包含文件扩展名或扩展名不是以下任一项时,请指定 'FileType'
名称-值对组参数。
-
.txt
、.dat
或.csv
(适用于带分隔符的文本文件) -
.xls
、.xlsb
、.xlsm
、.xlsx
、.xltm
、.xltx
或.ods
(适用于电子表格文件)
示例: 'FileType','text'
数据类型: char
| string
'NumHeaderLines'
- 标题行数
正整数
文件中标题行的数目,指定为以逗号分隔的对组,其中包含 'NumHeaderLines'
和一个正整数。如果未指定,则导入函数会自动检测文件中标题行的数目。
示例: 'NumHeaderLines',7
数据类型: single
| double
'ExpectedNumVariables'
- 需要的变量数目
正整数
需要的变量数目,指定为包含 'ExpectedNumVariables'
和正整数的逗号分隔对组。如果未指定,则导入函数会自动检测变量数目。
数据类型: single
| double
'Range'
- 要读取的数据部分
字符向量 | 字符串标量 | 数值向量
要从文本文件或电子表格文件中读取的数据部分,指定为以逗号分隔的对组,其中包含 'Range'
和采用以下形式之一的字符向量、字符串标量或数值向量。
指定 Range 的方式 |
说明 |
---|---|
起始单元格
|
将数据的起始单元格指定为字符向量、字符串标量或二元素数值向量。
根据起始单元格,导入函数通过从起始单元格开始导入,并在到达最后一个空行或页脚范围时结束,从而自动检测数据范围。 例如: |
矩形范围
|
使用以下形式之一的矩形范围指定要读取的精确范围。
导入函数只读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失单元导入。 |
行范围或列范围
|
通过使用 Excel 行号标识起始行和结束行来指定范围。 根据指定的行范围,导入函数通过从第一个非空列开始读取,一直到数据的最后,从而自动检测列范围,并为每一列创建一个变量。 示例: 也可以通过使用 Excel 列字母或列号标识起始列和结束列来指定范围。 根据指定的列范围,导入函数通过从第一个非空行开始读取,一直到数据的最后或页脚范围,从而自动检测行范围。 指定范围内的列数必须与 示例: |
起始行号
|
使用正标量行索引指定包含数据的第一行。 根据指定的行索引,导入函数通过从指定的第一行开始读取,一直到数据的最后或页脚范围,从而自动检测数据范围。 示例: |
Excel 中的命名范围
|
在 Excel 中,您可以创建名称来标识电子表格中的范围。例如,您可以选择电子表格的一个矩形部分,并将其命名为 示例: |
未指定或为空
|
如果未指定,则导入函数会自动检测使用的范围。 示例: 注意:使用范围指电子表格中实际包含数据的矩形部分。导入函数通过删减不包含数据的前导行列和尾随行列,自动检测使用范围。只包含空白的文本被视为数据,并会在使用范围内被捕获。 |
数据类型: char
| string
| double
'TreatAsMissing'
- 要解释为缺失数据的文本
字符向量 | 字符串标量 | 字符向量元胞数组 | 字符串数组
要解释为缺失数据的文本,指定为字符向量、字符串标量、字符向量元胞数组或字符串数组。
示例: 'TreatAsMissing',{'NA','TBD'}
指示导入函数将 NA
或 TBD
的任何实例都视为缺失字段。
数据类型: char
| string
| cell
'OutputType'
- 输出数据类型
字符向量 | 字符串标量
输出数据类型,指定为以逗号分隔的对组,由 'OutputType'
和包含下表中任何数据类型名称的字符向量或字符串标量组成。
数据类型 | 输出数据类型 |
---|---|
数值 |
'uint8' 、'int8' 、'int16' 、'int32' 、'int64' 、'uint16' 、'uint32' 、'uint64' 、'single' 或 'double'
|
文本 |
'char' 或 'string'
|
其他类型 |
'datetime' 、'duration' 或 'categorical'
|
示例: 'OutputType','uint8'
数据类型: char
| string
仅限文本文件
带分隔符的文本文件中的字段分隔符,指定为字符向量、字符串标量、字符向量元胞数组或字符串数组。
示例: 'Delimiter','|'
示例: 'Delimiter',{';','*'}
数据类型: char
| string
| cell
要视为空白的字符,指定为包含一个或多个字符的字符向量或字符串标量。
示例: 'Whitespace',' _'
示例: 'Whitespace','?!.,'
行尾字符,指定为字符向量、字符串标量、字符向量元胞数组或字符串数组。
示例: 'LineEnding','\n'
示例: 'LineEnding','\r\n'
示例: 'LineEnding',{'\b',':'}
数据类型: char
| string
| cell
注释样式,指定为字符向量、字符串标量、字符向量元胞数组或字符串数组。
例如,要忽略同一行上百分号后面的文本,请将 CommentStyle
指定为 '%'
。
示例: 'CommentStyle',{'/*'}
数据类型: char
| string
| cell
'Encoding'
- 字符编码方案'UTF-8'
|'ISO-8859-1'
|'windows-1251'
|'windows-1252'
| ...
与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding'
和 'system'
或标准字符编码方案名称。如果没有指定任何编码,则 readmatrix
函数在读取文件时将使用自动字符集检测来确定编码。
如果除导入选项外还指定了 'Encoding'
参数,readmatrix
函数将使用为 'Encoding'
指定的值,而覆盖导入选项中定义的编码方案。
示例: 'Encoding','UTF-8'
使用 UTF-8 作为编码。
示例: 'Encoding','system'
使用系统默认编码。
数据类型: char
| string
'DateLocale'
- 用于读取日期的区域设置
字符向量 | 字符串标量
用于读取日期的区域设置,指定为逗号分隔的对组,其中包含 'DateLocale'
和一个
形式的字符向量或字符串标量,其中:xx
_YY
-
YY
是指示国家/地区的大写 ISO 3166-1 alpha-2 代码。 -
xx
是指示语言的小写 ISO 639-1 双字母代码。
有关区域设置的常见值的列表,参考datetime函数的 Locale
名称-值对组参数。
使用 %D
格式设定符来将文本读取为 datetime
值时,请使用 DateLocale
指定导入函数应使用何种区域设置来解释月份和星期几的名称及缩写。
如果除 opts
导入选项外还指定了DateLocale
参数,则导入函数将使用为DateLocale
参数指定的值,而覆盖导入选项中定义的区域设置。
示例: 'DateLocale','ja_JP'
表示数值变量中小数分隔符的字符,指定为字符向量或字符串标量。导入函数使用 DecimalSeparator
名称-值对组中指定的字符来区分数字的整数部分和小数部分。
转换为整数数据类型时,带小数部分的数字将被舍入为最接近的整数。
示例: 如果名称-值对组指定为 'DecimalSeparator',','
,则导入函数将文本 "3,14159"
导入为数字 3.14159
。
数据类型: char
| string
表示数值变量中千分位的字符,指定为字符向量或字符串标量。千分位字符作为视觉分隔符,将数字按三位数一组进行分组。导入函数使用 ThousandsSeparator
名称-值对组中指定的字符来解释要导入的数字。
示例: 如果名称-值对组指定为 'ThousandsSeparator',','
,则导入函数将文本 "1,234,000"
导入为 1234000
。
数据类型: char
| string
'TrimNonNumeric'
- 删除非数值字符false
(默认) |true
从数值变量中删除非数值字符,指定为逻辑值 true
或 false
。
示例: 如果名称-值对组指定为 'TrimNonNumeric',true
,则导入函数将 '$500/-'
读取为 500
。
数据类型: logical
处理带分隔符的文本文件中连续分隔符的过程,指定为下表中的值之一。
连续分隔符规则 | 行为 |
---|---|
'split' |
将连续分隔符拆分为多个字段。 |
'join' |
将多个分隔符合并成一个分隔符。 |
'error' |
返回错误并中止导入操作。 |
数据类型: char
| string
管理带分隔符的文本文件中的前导分隔符的过程,指定为下表中的值之一。
前导分隔符规则 | 行为 |
---|---|
'keep' |
保留分隔符。 |
'ignore' |
忽略分隔符。 |
'error' |
返回错误并中止导入操作。 |
'TrailingDelimitersRule'
- 管理尾部分隔符的过程'keep'
|'ignore'
|'error'
管理带分隔符的文本文件中的尾部分隔符的过程,指定为下表中的值之一。
前导分隔符规则 | 行为 |
---|---|
'keep' |
保留分隔符。 |
'ignore' |
忽略分隔符。 |
'error' |
返回错误并中止导入操作。 |
仅限电子表格文件
要从中读取数据的工作表,指定为空字符数组、包含工作表名称的字符向量或字符串标量,或表示 工作表索引的正整数标量。根据为 Sheet
属性指定的值,导入函数的行为如下表中所述。
指定的值 | 行为 |
---|---|
'' (默认值) |
从第一个工作表导入数据。 |
名称 | 从具有匹配名称的工作表中导入数据,不考虑电子表格文件中工作表的顺序。 |
整数 | 从由整数指定的位置的工作表导入数据,不考虑电子表格文件中的工作表名称。 |
数据类型: char
| string
| single
| double
'UseExcel'
- 用于启动 Windows 版 Microsoft Excel 实例的标志false
(默认) |true
用于在读取电子表格数据时启动 Windows 版 Microsoft Excel 实例的标志,指定为逗号分隔的对组,包含 'UseExcel'
和 true
或 false
。
可以将 'UseExcel'
参数设置为下列值之一:
-
true
- 导入函数在读取文件时启动 Microsoft Excel 的实例。 -
false
- 导入函数在读取文件时不启动 Microsoft Excel 的实例。在此模式下操作时,导入函数功能支持的文件格式和交互式功能(例如公式和宏)有所不同。
UseExcel |
|
|
---|---|---|
支持的文件格式 |
|
|
支持交互功能,例如公式和宏 |
是 |
否 |
从 Windows 平台上的电子表格文件中读取时,如果想启动 Microsoft Excel 实例,则将 'UseExcel'
参数设置为 true
。