readmatrix
从文件中读取矩阵
说明
A = readmatrix( 通过从文件中读取列向数据来创建数组。filename)readmatrix 函数可自动检测文件的导入参数。
readmatrix 基于文件的扩展名确定文件格式:
.txt、.dat或.csv(带分隔符的文本文件).xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx或.ods(电子表格文件).zip、.gz或.tar(压缩和存档文件)。
对于包含数值和文本混合数据的文件,默认情况下,readmatrix 将数据作为数值数组导入。
A = readmatrix(___, 基于文件创建一个数组,并通过一个或多个名称-值对组参量指定其他选项。您需要在上述语法的输入参量之后指定名称-值对组。Name,Value)
要为数据设置特定的导入选项,您可以使用 opts 对象,也可以指定名称-值对组。当您指定除 opts 之外的名称-值对组时,readmatrix 仅支持下列名称-值对组:
文本文件 -
DateLocale、Encoding电子表格文件 -
Sheet、UseExcel
示例
显示 basic_matrix.txt 的内容,然后将数据导入矩阵。
type basic_matrix.txt6,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 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 12 5 1252 1245 1511 1500 {'HP'} 610 {'N905AW'} 79 75 58 11 7 {'LAX'} {'PHX'} 370 3 18 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 16 2 1441 1445 1708 1721 {'HP'} 211 {'N165AW'} 87 96 74 -13 -4 {'RNO'} {'PHX'} 601 4 9 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 1 1 2258 2300 2336 2335 {'HP'} 1245 {'N183AW'} 38 35 20 1 -2 {'TUS'} {'PHX'} 110 6 12 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 4 4 1814 1814 1901 1910 {'US'} 683 {'N963VJ'} 47 56 34 -9 0 {'DTW'} {'PIT'} 201 6 7 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 31 3 1822 1820 1934 1925 {'US'} 757 {'N912VJ'} 72 65 52 9 2 {'PHL'} {'PIT'} 267 6 14 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 18 4 729 730 841 843 {'US'} 1564 {'N941VJ'} 72 73 58 -2 -1 {'DCA'} {'PVD'} 357 3 11 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 26 5 1704 1705 1829 1839 {'NW'} 1538 {'N960N' } 85 94 69 -10 -1 {'DTW'} {'RIC'} 456 3 13 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 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 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 12 5 1252 1245 1511 1500 {'HP'} 610 {'N905AW'} 79 75 58 11 7 {'LAX'} {'PHX'} 370 3 18 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 16 2 1441 1445 1708 1721 {'HP'} 211 {'N165AW'} 87 96 74 -13 -4 {'RNO'} {'PHX'} 601 4 9 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 1 1 2258 2300 2336 2335 {'HP'} 1245 {'N183AW'} 38 35 20 1 -2 {'TUS'} {'PHX'} 110 6 12 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 4 4 1814 1814 1901 1910 {'US'} 683 {'N963VJ'} 47 56 34 -9 0 {'DTW'} {'PIT'} 201 6 7 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 31 3 1822 1820 1934 1925 {'US'} 757 {'N912VJ'} 72 65 52 9 2 {'PHL'} {'PIT'} 267 6 14 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 18 4 729 730 841 843 {'US'} 1564 {'N941VJ'} 72 73 58 -2 -1 {'DCA'} {'PVD'} 357 3 11 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 char}
1996 1 26 5 1704 1705 1829 1839 {'NW'} 1538 {'N960N' } 85 94 69 -10 -1 {'DTW'} {'RIC'} 456 3 13 0 {0×0 char} 0 {0×0 char} {0×0 char} {0×0 char} {0×0 char} {0×0 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 可以采用下列形式之一。
位置 | 形式 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| 当前文件夹或 MATLAB® 路径上的文件夹 | 指定 例如: | ||||||||
文件夹中的文件 | 如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则在 例如: 例如: | ||||||||
| Internet URL | 如果文件指定为 Internet 统一资源定位器 (URL),则 例如: | ||||||||
远程位置 | 如果文件存储在远程位置,则
根据远程位置,
有关详细信息,请参阅处理远程数据。 例如: |
如果
filename包含文件扩展名,则导入函数基于扩展名确定文件格式。否则,您必须指定'FileType'名称-值对组参量以指示文件类型。在安装了 Microsoft® Excel® 软件的 Windows® 系统上,导入函数读取您的 Excel 版本可识别的任何 Excel 电子表格文件格式。
如果您的系统没有 Windows 版 Excel 或者您正在使用 MATLAB Online™,则导入函数在
UseExcel属性设置为false的情况下运行,并且只读取.xls, .xlsx, .xlsm, .xltx, and .xltm文件。对于带分隔符的文本文件,导入函数将文件中的空字段转换为
NaN(对于数值变量)或空字符向量(对于文本变量)。文本文件中的所有行必须有相同数量的分隔符。导入函数会忽略文件中的无用空白。压缩文件格式作为文件读取。存档文件格式被视为文件夹。例如,函数将
mydatafiles.zip解释为文件夹,因此必须在其中指定一个文件,如mydatafiles.zip/file1.xlsx。对于以.gz扩展名结尾的文件,函数通过使用.gz之前的扩展名来确定文件格式。例如,mydata.csv.gz作为 CSV 文件读取。 (自 R2025a 起)
数据类型: char | string
文件导入选项,指定为 detectImportOptions 函数创建的 SpreadsheetImportOptions、DelimitedTextImportOptions、FixedWidthImportOptions 或 XMLImportOptions 对象。opts 对象包含控制数据导入过程的属性。有关每个对象的属性的详细信息,请参阅相应的对象页。
| 文件类型 | 输出 |
|---|---|
| 电子表格文件 | SpreadsheetImportOptions 对象(仅对 Sheet、DataRange 和 VariableNames 属性可用) |
| 文本文件 | DelimitedTextImportOptions 对象 |
| 等宽文本文件 | FixedWidthImportOptions 对象 |
| XML 文件 | XMLImportOptions 对象 |
有关如何控制导入的详细信息,请参阅Control How MATLAB Imports Your Data。
名称-值参数
以 Name1=Value1,...,NameN=ValueN 的形式指定可选参量对组,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。
示例: 'NumHeaderLines',5 表示表格数据前面的前五行是标题行。
所有支持的文件类型
HTTP 或 HTTPS 请求选项,指定为 weboptions 对象。当指定的 filename 是包含协议类型 "http://" 或 "https://" 的 Internet URL 时,由 weboptions 对象确定如何导入数据。
文本和电子表格文件
文件类型,以逗号分隔的对组形式指定,其中包含 'FileType' 以及 'text' 或 'spreadsheet'。
当 filename 不包含文件扩展名或扩展名不是以下任一项时,请指定 'FileType' 名称-值对组参量。
.txt、.dat或.csv(带分隔符的文本文件).xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx或.ods(电子表格文件)
示例: 'FileType','text'
数据类型: char | string
文件中标题行的数目,指定为以逗号分隔的对组,其中包含 'NumHeaderLines' 和一个正整数。如果未指定,则导入函数会自动检测文件中标题行的数目。
示例: 'NumHeaderLines',7
数据类型: single | double
需要的变量数目,指定为包含 'ExpectedNumVariables' 和正整数的逗号分隔对组。如果未指定,则导入函数会自动检测变量数目。
数据类型: single | double
要从文本文件或电子表格文件中读取的数据部分,指定为以逗号分隔的对组,其中包含 'Range' 和采用以下形式之一的字符向量、字符串标量或数值向量。
指定 Range 的方式 | 描述 |
|---|---|
起始单元格
| 将数据的起始单元格指定为字符向量、字符串标量或二元素数值向量。
根据起始单元格,导入函数通过从起始单元格开始导入,并在到达最后一个空行或页脚范围时结束,从而自动检测数据范围。 例如: |
矩形范围
| 使用以下形式之一的矩形范围指定要读取的精确范围。
导入函数只读取指定范围内包含的数据。指定范围内的任何空字段都作为缺失单元导入。 |
行范围或列范围
| 通过使用 Excel 行号标识起始行和结束行来指定范围。 根据指定的行范围,导入函数通过从第一个非空列开始读取,一直到数据的最后,从而自动检测列范围,并为每一列创建一个变量。 示例: 也可以通过使用 Excel 列字母或列号标识起始列和结束列来指定范围。 根据指定的列范围,导入函数通过从第一个非空行开始读取,一直到数据的最后或页脚范围,从而自动检测行范围。 指定范围内的列数必须与 例如: |
起始行号
| 使用正标量行索引指定包含数据的第一行。 根据指定的行索引,导入函数通过从指定的第一行开始读取,一直到数据的最后或页脚范围,从而自动检测数据范围。 示例: |
Excel 中的命名范围
| 在 Excel 中,您可以创建名称来标识电子表格中的范围。例如,您可以选择电子表格的一个矩形部分,并将其命名为 例如: |
未指定或为空
| 如果未指定,则导入函数会自动检测使用的范围。 例如: 注意:使用范围指电子表格中实际包含数据的矩形部分。导入函数通过删减不包含数据的前导行列和尾随行列,自动检测使用范围。只包含空白的文本被视为数据,并会在使用范围内被捕获。 |
数据类型: char | string | double
要解释为缺失数据的文本,指定为字符向量、字符串标量、字符向量元胞数组或字符串数组。
示例: 'TreatAsMissing',{'NA','TBD'} 指示导入函数将 NA 或 TBD 的任何实例都视为缺失字段。
数据类型: char | string | cell
输出数据类型,指定为以逗号分隔的对组,由 'OutputType' 和包含下表中任何数据类型名称的字符向量或字符串标量组成。
| 数据类型 | 输出数据类型 |
|---|---|
| 数值 | 'uint8'、'int8'、'int16'、'int32'、'int64'、'uint16'、'uint32'、'uint64'、'single' 或 'double' |
| 文本 | 'char' 或 'string' |
| 其他类型 | 'datetime'、'duration' 或 'categorical' |
示例: 'OutputType','uint8'
数据类型: char | string
仅限文本文件
带分隔符的文本文件中的字段分隔符,指定为字符串数组、字符向量或字符向量元胞数组。
示例: "Delimiter","|"
示例: "Delimiter",[";","*"]
要视为空白的字符,指定为包含一个或多个字符的字符向量或字符串标量。
示例: 'Whitespace',' _'
示例: 'Whitespace','?!.,'
行尾字符,指定为字符串数组、字符向量或字符向量元胞数组。
示例: "LineEnding","\n"
示例: "LineEnding","\r\n"
示例: "LineEnding",["\b",":"]
注释样式,指定为字符串数组、字符向量或字符向量元胞数组。对于单行和多行注释,起始标识符必须为第一个非空白字符。对于单行注释,请指定一个标识符,以便将以该标识符开头的行视为注释。对于多行注释,从起始(第一个)标识符到结束(第二个)标识符的行被视为注释。最多只能指定两个由标识符组成的字符向量。
例如,要忽略百分号后面的行作为第一个非空白字符,请将 CommentStyle 指定为 "%"。
示例: "CommentStyle",["/*"]
示例: "CommentStyle",["/*","*/"]
与文件关联的字符编码方案,指定为以逗号分隔的对组,其中包含 'Encoding' 和 'system' 或标准字符编码方案名称。如果您没有指定任何编码,则 readmatrix 函数在读取文件时将使用自动字符集检测来确定编码。
如果除导入选项外您还指定了 'Encoding' 参量,readmatrix 函数将使用为 'Encoding' 指定的值,而覆盖导入选项中定义的编码方案。
示例: 'Encoding','UTF-8' 使用 UTF-8 作为编码。
示例: 'Encoding','system' 使用系统默认编码。
数据类型: char | string
用于读取日期的区域设置,指定为逗号分隔的对组,其中包含 'DateLocale' 和一个 形式的字符向量或字符串标量,其中:xx_YY
YY是指示国家/地区的大写 ISO 3166-1 alpha-2 代码。xx是指示语言的小写 ISO 639-1 双字母代码。
下表列出了区域设置的某些常用值。
| 区域设置 | 语言 | 国家/地区 |
|---|---|---|
'de_DE' | 德语 | 德国 |
'en_GB' | 英语 | 英国 |
'en_US' | 英语 | 美国 |
'es_ES' | 西班牙语 | 西班牙 |
'fr_FR' | 法语 | 法国 |
'it_IT' | 意大利语 | 意大利 |
'ja_JP' | 日语 | 日本 |
'ko_KR' | 韩语 | 韩国 |
'nl_NL' | 荷兰 | 荷兰 |
'zh_CN' | 简体中文 | 中国 |
使用 %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
从数值变量中删除非数值字符,指定为逻辑值 true 或 false。
示例: 如果名称-值对组指定为 'TrimNonNumeric',true,则导入函数将 '$500/-' 读取为 500。
数据类型: logical
管理带分隔符的文本文件中的连续分隔符的过程,指定为下表中的值之一。
| 值 | 行为 |
|---|---|
"split" | 将连续分隔符拆分为多个字段。 |
"join" | 将多个分隔符合并成一个分隔符。 |
"error" | 返回错误并取消导入操作。 |
管理带分隔符的文本文件中的前导分隔符的过程,指定为下表中的值之一。
| 值 | 行为 |
|---|---|
"keep" | 保留分隔符。 |
"ignore" | 忽略分隔符。 |
"error" | 返回错误并取消导入操作。 |
管理带分隔符的文本文件中的尾部分隔符的过程,指定为下表中的值之一。
| 前导分隔符规则 | 行为 |
|---|---|
'keep' | 保留分隔符。 |
'ignore' | 忽略分隔符。 |
'error' | 返回错误并中止导入操作。 |
仅限电子表格文件
要从中读取数据的工作表,指定为空字符数组、包含工作表名称的字符向量或字符串标量,或表示工作表索引的正整数标量。根据为 Sheet 属性指定的值,导入函数的行为如下表中所述。
| 指定的值 | 行为 |
|---|---|
''(默认值) | 从第一个工作表导入数据。 |
| 名称 | 从具有匹配名称的工作表中导入数据,不考虑电子表格文件中工作表的顺序。 |
| 整数 | 从由整数指定的位置的工作表导入数据,不考虑电子表格文件中的工作表名称。 |
数据类型: char | string | single | double
用于在读取电子表格数据时启动 Windows 版 Microsoft Excel 实例的标志,指定为逗号分隔的对组,包含 'UseExcel' 和 true 或 false。
您可以将 'UseExcel' 参数设置为下列值之一:
true- 导入函数在读取文件时启动 Microsoft Excel 的实例。false- 导入函数在读取文件时不启动 Microsoft Excel 的实例。在此模式下操作时,导入函数功能支持的文件格式和交互式功能(例如公式和宏)有所不同。
UseExcel |
|
|
|---|---|---|
| 支持的文件格式 |
|
|
支持交互功能,例如公式和宏 | 是 | 否 |
从 Windows 平台上的电子表格文件中读取时,如果您想启动 Microsoft Excel 实例,则将 'UseExcel' 参数设置为 true。
UseExcel 在非交互式自动化环境中不受支持。
自 R2024b 起
跨列合并单元格的规则,指定为下表中的值之一。
| 导入规则 | 行为 |
|---|---|
"placeleft" | 将数据放在最左侧单元格中,并用 您可以在要导入的变量的 |
"placeright" | 将数据放在最右侧单元格中,并用 您可以在要导入的变量的 |
"duplicate" | 在所有单元格中复制数据。 |
"omitrow" | 忽略出现合并单元格的行。 |
"error" | 显示错误消息并取消导入操作。 |
自 R2024b 起
跨行合并单元格的规则,指定为下表中的值之一。
| 导入规则 | 行为 |
|---|---|
"placetop" | 将数据放在顶部单元格中,并用 您可以在要导入的变量的 |
"placebottom" | 将数据放在底部单元格中,并用 您可以在要导入的变量的 |
"duplicate" | 在所有单元格中复制数据。 |
"omitvar" | 省略出现合并单元格的变量。 |
"error" | 显示错误消息并取消导入操作。 |
版本历史记录
在 R2019a 中推出您可以将压缩和存档文件中的数据作为矩阵读取。
从电子表格导入数据时,您可以使用 MergedCellRowRule 和 MergedCellColumnRule 名称-值参量来指定 readmatrix 如何导入跨行和列合并的单元格。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)