主要内容

写高大的阵列,为检查点本地和远程位置

描述

例子

写(地点助教计算在高大数组中的值助教并将数组写入文件文件夹中的文件地点. 这个数据is stored in an efficient binary format suitable for reading back using数据存储区(位置)

例子

写(filepattern助教使用来自的文件扩展名filepattern确定输出格式。filepattern必须包括对文件写入到一个文件夹中,然后由包括通配符的文件名*. 这个wildcard represents incremental numbers for generating unique file names. For example,写('文件夹/ myfile _ *。csv',ta)

例子

写(___名称,值指定与使用任何先前的语法的一个或多个名称值对参数的附加选项。例如,你可以指定文件类型'文件类型'和一个有效的文件类型(“垫”“序列”“铺”'文本',或“表格”),也可以指定自定义写入函数来处理数据'WriteFcn'和一个函数句柄。

例子

全部折叠

将高数组写入磁盘,然后通过为写入的文件创建新的数据存储恢复高数组。这个过程对于保存您的工作或与同事共享一个高数组非常有用。

创建一个数据存储区airlinesmall.csv数据集。只选择它, 和UniqueCarrier变量,和治疗'na'值作为缺失数据。将数据存储转换为高大的表格。

DS =数据存储区('airlinesmall.csv');ds。T.reatAsMissing ='na';ds。SelectedVariableNames = {'月''年'“唯一承运人”};tt =高(ds)
TT = M×3高大表月年UniqueCarrier _____ ____ _____________ 10 1987 'PS' 10 1987 'PS' 10 1987 'PS' 10 1987 'PS' 10 1987 'PS' 10 1987 'PS' 10 1987 'PS' 10 1987'PS'::::::

按年份按降序对数据进行排序并提取前25行。由此产生的高表未被评估。

tt_new = topkrows(tt,25,'年'
tt_new=M×3高台月-年UniqueCarrier预览推迟。了解更多。

将结果保存到名为的新文件夹exampledata.C:\磁盘(您可以指定不同的写入位置,尤其是在不使用Windows®计算机的情况下。)功能前以书面文件评估高大的阵列,因此没有必要使用收集函数,然后保存数据。

位置=“C: \ ExampleData”;写(位置,tt_new)
using the Local MATLAB Session: - Pass 1 of 1: Completed in 0.52 sec

清除ttDS.来自您的工作目录。要恢复写入磁盘的高表,请首先创建引用相同目录的新数据存储。然后将数据存储转换为高表。由于在被写入磁盘之前评估了高表,因此显示现在包括值的预览。

清楚的ttDS.DS2 =数据存储(位置);tt2 =高(DS2)
TT2 = M×3高大表月年UniqueCarrier _____ ____ _____________ 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008'WN'::::::

创建一个高表引用tsunamis.xlsx数据文件,其中包含有关海啸的位置、震级和原因的时间戳数据。

ds = spreadsheetDatastore ('tsunamis.xlsx');T =高(ds)
T = MX20高大表纬度经度年月日时分秒ValidityCode有效性CauseCode原因EarthquakeMagnitude国家区MaxHeight IidaMagnitude强度NumDeaths DescDeaths ________ _________ ____ _____ ___ ____ ______ ______ ____________ _________________________ _________ __________________ ___________________ ___________________ __________________________ _________ _____________ _________ _________ __________ -3.8 128.3 1950年108 3 23 2的NaN { '可疑海啸'} {1 '地震'} 7.6 { '印度尼西亚'} { 'JAVA TRENCH,印度尼西亚'} 2.8 1.5 1.5楠楠19.5 -156 1951 8 21 10 57 4的NaN {'确定海啸'} {1' 地震 '} 6.9 { 'USA'} { '夏威夷'} 3.6 1.8楠楠的NaN -9.02 157.95 1951 12 22楠楠的NaN 2 { '可疑海啸'} 6 { '火山'}的NaN {' SOLOMON群岛 '} {' KAVACHI '} 6 2.6的NaN楠楠42.15 143.85 1952 3 4 1 22 41 4 { '确定海啸'} {1 '地震'} 8.1 { 'JAPAN'} {' SE。北海道”} 6.5 2.7 2 33 1 19.1 -155 1952 3 17 3 58 4的NaN { '确定海啸'} {1 '地震'} 4.5 { 'USA'} { '夏威夷'} 1楠楠楠楠43.1 -82.41952年5 6的NaN楠楠1 { '非常可疑海啸'} 9 { '气象'}的NaN { 'USA'} { '休伦湖,MI'} 1.52楠楠楠楠52.75 159.5 1952 11 4 16 58 NaN的4 {”明确的海啸 '} 1 { '地震'} 9 { '俄罗斯'} { '堪察加'} 18 4.2 4 2236 3 50 156.5 1953 3 18楠楠NaN 3的{ '可能海啸'} 1 { '地震'} 5.8 {'俄罗斯} {'N.千岛群岛”} 1.5 0.6楠楠楠::::::::::::::::::::::::::::::::::::::::

结合小时分钟, 和第二变量转换为单个datetime变量,然后从表中删除这些变量。删除任何包含丢失数据的行。

T.DateTime = datetime (T。年那T.。月那T.。日那T.。小时那T.。分钟那T.。Second); T(:,3:8) = []; TT = rmmissing(T)
TT = Mx15高表经度纬度ValidityCode有效性CauseCode引起EarthquakeMagnitude国家位置MaxHeight IidaMagnitude强度NumDeaths DescDeaths DateTime  ________ _________ ____________ ____________________ _________ ____________________________ ___________________ _____________ ____________________________ ______________________ _________ _________ __________ ____________________ 42.15 - 143.85 4{“明确的海啸”}1 8.1{‘地震’}{‘日本’}{SE。4{'确定海啸'}3{'地震和滑坡'}3{'美国'}'SE. '日本' . '日本' . '日本' . '日本' . '日本' . '日本' . '日本' . '日本' . '日本' . '日本' . '阿拉斯加,正义与发展党’}524.26 - 4.6 5 5 1 10 - 7月- 1958年06:15:53 -39.5 - -74.5 4{“明确的海啸”}1 9.5{‘地震’}{“智利”}{智利中部的}3 22 - 25 4.6 - 4 1260 5 - 1960 19:11:17 -6.8 - -80.7 4{“明确的海啸”}1 6.8{‘地震’}{秘鲁的}{秘鲁的}9 3.2 - 2.5 66 2 - 1960 22:01:56 11月20 - 61.1 - -147.5 4{“明确的海啸”}3 9.2{地震和山体滑坡的}{'USA'} {'PRINCE WILLIAM SOUND, AK'} 67 6.1 5 221 3 28-Mar-1964 03:36:14 38.65 139.2 4 {'definite tsunami'} 1 {'Earthquake'} 7.5 {'JAPAN'} {'NW. 5 .(日本)本州岛}5.8 2.7 - 2 1 16 - 6月26日- 1964年04:01:44 0.2 - 119.8 4{“明确的海啸”}1 7.8{‘地震’}{“印度尼西亚”}{“班达海”}10 3.3 200 3 14 - 8月- 1968 22:14:19 -3.1 - 118.9 4{“明确的海啸”}1 6.9{‘地震’}{“印度尼西亚”}{“望加锡海峡”}4 2 2 600 1969 00:36:56 23 - 2月  : : : : : : : : : : : : : : : : : : : : : : : : : :: : : :

将表格写入电子表格文件到AmazonS3®存储中的远程位置。要将数据读取或写入Amazon S3,您必须设置aws_access_key_id.AWS_SECRET_ACCESS_KEY使用帐户凭据的环境变量。有关详细信息,请参阅使用远程数据

setenv ('AWS_ACCESS_KEY_ID''your_aws_access_key_id');setenv ('AWS_SECRET_ACCESS_KEY''your_aws_secret_access_key');位置=“s3: / / bucketname / preprocessedData /”;写(位置、TT'文件类型'“表格”

为了读回数据,使用数据存储来指向数据现在驻留的远程位置。

DS =数据存储(位置);TT =高(DS);

创建并使用自定义写入功能,以不直接通过支持其他格式写入数据万博1manbetx,例如镜像文件。

创建的图像数据存储引用所有的样本图像工具箱/ matlab /演示文件夹。所选图像具有扩展jpg.TIF, 和.png..将数据存储区转换为高级单元格数组。

demoFolder =完整文件(matlabroot,'工具箱''matlab'“演示”);DS = imageDatastore(demoFolder,“文件扩展名”,{'.jpg'“.tif”“巴纽”});t =高(DS);

将其中一个图像放入记忆中并显示出来。

I =聚(T(1));
使用本地MATLAB会话评估tall表达式:-通过1/1:在3秒内完成评估在3.2秒内完成
imshow(i {1},'InitialMagnification',30)

不直接支持图像文件万博1manbetx,因此要以不同的格式输出图像,必须创建一个新函数来处理文件写入。写函数接收两个输入写:

  • 信息是含有约数据的当前块的信息字段的结构。您可以使用这些字段来构建自己独特的文件名,或者干脆使用SuggestedFilename字段,以使用由

  • 数据是通过使用获得的当前数据块在数据存储。

功能的ImageWriter使用建议的文件名,并使用IMWRITE.将图像文件写入磁盘jpg文件夹。将此功能保存在当前工作文件夹中。

类型的ImageWriter
函数imageWriter(信息,数据)filename=info.SuggestedFilename;imwrite(数据{:},文件名)结束

将数据存储区中的图像写入名为的新文件夹exampleImagesC:\磁盘。(您可以使用不同的位置,特别是如果您没有使用Windows®计算机。)通过的ImageWriter作为自定义写入功能使用'WriteFcn'名称值对参数。

位置=“C: \ exampleImages \ * . jpg image_”;写(位置,T,'WriteFcn',@ImageWriter)
将高数据写入文件夹C:\ exampleImages使用本地MATLAB会话评估高表达式: - 通过1的第1条:在0.71秒的评估中完成0.98秒

显示写入文件的文件夹的内容。

谜语C:\ exampleImages
.Image_1_000001.jpg image_3_000001.jpgimage_2_000001.jpg image_4_000001.jpg image_6_000001.jpg

要将图像读回MATLAB®,请创建引用相同位置的数据存储。

ds = imageDatastore(位置);T =高(ds)
T = 6×1高大单元阵列{1024×2048×3 UINT8} {650×600×3 UINT8} {1024×2048×3 UINT8} {650×600×3 UINT8} {480×640×3 UINT8} {480×640×3 UINT8}

输入参数

全部折叠

文件夹的位置写入数据,指定为字符向量或字符串。地点可以指定完整路径或相对路径。指定的文件夹可以是以下选项之一:

  • 现有的空文件夹

  • 新文件夹那个创造

您可以将数据写入计算机上的本地文件夹,共享网络上的文件夹,或在HDFS™,Azure中的远程位置®,或Amazon S3™。有关向远程位置读写数据的详细信息,请参见使用远程数据

其他考虑因素适用于Hadoop®和Apache星火™:

  • 如果该文件夹在本地不可用,则该文件夹的完整路径必须是形式的统一资源定位符(URL):
    hdfs:///到文件的路径

  • 在写入HDFS之前,请设置HADOOP_HOMEHADOOP_PREFIX,或MATLAB_HADOOP_INSTALL环境变量到安装Hadoop的文件夹。

  • 在写入Apache Spark之前,请设置SPARK_HOME环境变量设置为Apache安装星火的文件夹。

例子:位置= ' hdfs: / / /一些/输出/文件夹”指定HDFS URL。

例子:位置 = '../../ dir /数据的指定相对文件路径。

例子:位置='C:\Users\MyName\Desktop\data'指定Windows的绝对路径®桌面文件夹。

例子:位置=“文件:///路径/到/数据”指定文件夹的绝对URI路径。

数据类型:char|细绳

输入阵列,指定为高阵列。

文件命名模式,指定为字符串或字符向量。该文件的命名模式必须包含写文件到一个文件夹中,然后由包括通配符的文件名*. 这个功能替换序列号通配符,以确保唯一的文件名。

例子:写( '文件夹/数据_ *。TXT',TA)写入高数组助教一系列的.txt文件in.文件夹与文件名data_1.txtdata_2.txt, 等等。

数据类型:char|细绳

名称-值对的观点

指定可选的逗号分离对名称,值论点。的名字是参数名称和价值是相应的价值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:写入('C:\myData', tX, 'FileType', 'text', 'WriteVariableNames', false)写入高数组tXC: \ myData作为不使用变量名作为列标题的文本文件集合。
常规选项

全部折叠

类型的文件,指定为逗号分隔的一对组成的'文件类型'和允许的文件类型之一:'汽车'“垫”“铺”“序列”'文本',或“表格”

使用'文件类型'名称 - 值对与地点参数指定要写入的文件类型。默认情况下,尝试自动检测正确的文件类型。您不需要指定'文件类型'名称 - 值对参数如果可以从一个扩展确定文件类型地点或者filepattern论点。可以判断从这些扩展的文件类型:

  • .mat对MATLAB®数据文件

  • .parquet或者帕尔克先生木地板的文件

  • .seq对于序列文件

  • .txt.DAT.,或.csv.用于分隔的文本文件

  • xls.xlsx..xlsb.xlsm.xltx.,或.xltm.电子表格文件

例子:写入('C:\myData',tX',FileType',text')

自定义写函数,指定为逗号分隔对组成'WriteFcn'和一个函数句柄。指定的函数从中接收数据块助教并负责创建输出文件。你可以使用'WriteFcn'名称-值对参数以各种格式写入数据,即使不直接支持输出格式。万博1manbetx

功能性签名

自定义写入函数必须接受两个输入参数,信息数据

功能myWriter(信息,数据)

  • 数据包含数据的从块助教

  • 信息是一种结构,其字段包含有关数据块的信息。您可以使用这些字段来构建一个在最终位置中全局唯一的新文件名。结构域是

    场地 描述
    必备位置 临时输出文件夹的完全限定路径。只有写入此文件夹的文件才会复制到最终目的地。
    RequiredFilePattern 输出文件名所需的文件模式。如果仅指定了文件夹名称,则此字段为空。
    SuggestedFilename 符合位置和命名要求一个完全合格的,全球唯一的文件名。
    PartitionIndex 高大阵列分区的索引被写入。
    NumPartitions 高数组中的分区总数。
    blockindexinpartition. 分区中当前数据块的位置。
    Isfinalblock. 真的如果当前块是分区的最终块。

文件命名

用于输出文件的文件名决定了输出文件的顺序数据存储后来读取文件备份。如果文件事项的顺序,那么最好的做法是使用SuggestedFilename字段来命名文件,因为建议的名称保证了文件顺序。如果您不使用建议的文件名,那么自定义写入函数必须创建全局唯一的、顺序正确的文件名。文件名应该遵循中列出的命名模式RequiredFilePattern.当与parallel Computing Toolbox™并行运行时,文件名必须是唯一的,并且在worker之间的顺序必须正确,即使每个worker写入自己的本地文件夹。

阵列具有多个分区

您可以将一个高大的阵列到分区,以便于平行阵列并行计算工具箱上运行计算。每个分区是仍包含更小的块,其单独装入内存的。

信息包含几个与分区相关的字段:PartitionIndexNumPartitionsblockindexinpartition., 和Isfinalblock.. 这个se fields are useful when you are writing out a single file and appending to it, which is a common task for arrays with large partitions that have been split into many blocks. The custom writing function is called once per block, and the blocks in one partition are always written in order by the same worker. However, different partitions can be written by different workers.

例如功能

写入电子表格文件的简单书写功能

功能dataWriter(信息,数据)的文件名= info.SuggestedFilename;writetable(数据,文件名,'文件类型'“表格”结尾
调用dataWriter对于一些数据的写入功能tt,使用这些命令。
TT =高(array2table(兰特(5000,3)));位置='/tmp/MyData/tt_*.xlsx';写(位置、tt'WriteFcn',@datawriter);
对于每个块,dataWriter函数中建议的文件名信息结构和调用writetable写一个电子表格文件。方法中指定的文件命名模式将考虑到建议的文件名地点论点

数据类型:function_handle.

文本或电子表格文件

全部折叠

指示符用于写入的变量名作为列标题,指定为逗号分隔的一对组成的'WriteVariableNames'和数字或逻辑1真的)或0.).

指示器

行为

真的

变量名被包括作为输出的列标题。(默认)

变量名不包含在输出。

区域设置用于写入日期,指定为逗号分隔的一对组成的'DateLocale'和字符矢量或字符串标量。写作时约会时间值的文件,请使用DateLocale指定区域设置,其中应该写一个月和一周的名称和缩写。字符矢量或字符串采用表格XX._yy., 在哪里XX.是指示语言小写的ISO 639-1两个字母的代码,yy.是大写ISO 3166-1的α-2代码表示的国家。对于语言环境共同值的列表,请参阅语言环境的名称-值对参数约会时间功能。

对于Excel®文件,写一个包含变量约会时间阵列作为Excel日期并忽略了'DateLocale'参数值。如果约会时间变量包含之前,无论是1900还是1904,则年将变量写入文本。有关Excel日期的详细信息,请参见1900和Excel 1904日期系统之间的区别

例子:'DateLocale', 'Ja_JP表示'或者“DateLocale”、“ja_JP”

数据类型:char|细绳

仅限文本文件

全部折叠

字段分隔符,指定为逗号分隔对,由“分隔符”和其中一个说明符。

说明符

字段分隔符

','

'逗号'

逗号(默认)

' '

'空间'

空间

'\ t'

“标签”

标签

';'

“半成品”

分号

'|'

“酒吧”

垂直条

你可以使用“分隔符”名称-值对参数仅用于分隔文本文件。

例子:“分隔符”,“空间”或者“分隔符”,“空间”

用于书写引用文本的指示符,指定为逗号分隔对,由“QuoteStrings”和任何一种或者真的.如果“QuoteStrings”设置为真的, 然后将文本用双引号括起来,并用两个双引号字符替换作为该文本一部分的任何双引号字符。例如,请参见写引用的文本到CSV文件

你可以使用“QuoteStrings”仅使用带分隔符的文本文件的名称-值对参数。

字符编码方案与文件相关联,指定为逗号分隔的一对组成的“编码”“系统”或标准字符编码方案名称等在此表中的值之一。如果不指定任何编码或编码指定为“系统”, 这函数使用系统默认编码写入文件。

“中文”

'ISO-8859-1'

“windows - 874”

'big5-hkscs'

'ISO-8859-2'

'窗口-949'

'CP949'

“iso - 8859 - 3”

“windows - 1250”

'EUC-KR'

'ISO-8859-4'

“windows - 1251”

'EUC-JP'

'ISO-8859-5'

“窗口1252”

'euc-tw'

“iso - 8859 - 6”

“windows - 1253”

“GB18030”

'ISO-8859-7'

“windows-1254”

“GB2312”

“iso - 8859 - 8”

“windows-1255”

'GBK'

“iso - 8859 - 9”

“windows-1256”

'IBM866'

'ISO-8859-11'

“windows-1257”

'koi8-r'

“iso - 8859 - 13”

'Windows-1258'

'koi8-u'

“iso - 8859 - 15”

'美国 - ascii'

'Macintosh'

'UTF-8'

'SHIFT_JIS'

例子:“编码”,“系统”或者“编码”,“系统”使用系统默认编码。

只有电子表格文件

全部折叠

目标工作表,指定为逗号分隔对,由'床单'和字符载体或含有该工作表的名称或正整数,指示工作表索引的字符串标量。工作表名称不能包含冒号().确定电子表格文件中的纸张名称,使用表格= SheetNames(文件名).有关更多信息,请参阅张贴名录

如果图纸不存在,则在工作表集合的末尾添加新工作表。如果工作表是大于工作表数目的索引,则追加空工作表,直到工作簿中的工作表数等于工作表索引。无论哪种情况,生成警告,指示已添加新工作表。

你可以使用'床单'名称 - 值对参数只能用电子表格文件。

例子:'床单'2

例子:'床单'“MySheetName”

数据类型:char|细绳||双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|uint32|uint64

只有木地板的文件

全部折叠

镶木压缩算法,指定为其中一个值。

  • 'snappy''brotli'“gzip”,或“解压缩”.如果指定一个压缩算法,那么压缩使用相同的算法的所有变量。

  • 或者,您可以指定字符向量的单元格数组或包含每个变量所用压缩算法名称的字符串向量。

一般来说,'snappy'具有更好的读写性能,“gzip”具有处理时间在多个CPU的成本较高的压缩比,并'brotli'通常以压缩速度为代价生成最小的文件大小。

例子:写入( 'C:\ myData的',TX, '文件类型', '拼花', 'VariableCompression', 'brotli')

例子:写入('C:\myData',tX',FileType',parquet','VariableCompression',{'brotli''snappy''gzip'})

编码方案名称,指定为以下值之一:

  • '汽车'-使用'清楚的'逻辑变量的编码,以及'字典'编码为所有其他人。

  • '字典''清楚的'- 如果指定一个编码方案,那么编码与方案中的所有变量。

  • 或者,您可以指定字符向量的单元格数组或包含每个变量使用的编码方案名称的字符串向量。

一般来说,'字典'编码会导致文件变小,但是'清楚的'对于不包含许多重复值的变量,编码可以更快。如果字典的大小或唯一值的数量增长到太大,那么编码将自动恢复为普通编码。有关镶木地板编码的更多信息,请参见拼花地板编码定义

例子:write('myData.parquet',T',FileType',parquet',VariableEncoding',plain')

例子:写('mydata.parquet',t,'filetype','parquet','displassencoding',{'plain'icimenticoding''plain'plin'})

拼花版使用,指定为任意一种'1.0'或者'2.0'.默认情况下,'2.0'提供最有效的存储,但您可以选择'1.0'以获得与支持Parquet格式的外部应用程序的最广泛兼容性。万博1manbetx

警告

木地板1.0版有一个限制,它可以输入的不是往返变量uint32(它们被读回MatlabINT64.).

限制

在某些情况下,写入(location, T, 'FileType', type)创建并不代表原始数组文件T.确切地。如果你使用数据存储区(位置)读取这些文件,那么结果可能不具有相同的格式或内容与原始高大表。

  1. 为了'文本'“表格”文件类型,使用这些规则:

    • 输出数值变量使用格式和类别、字符或字符串变量作为未加引号的文本。

    • 对于具有多个列的Nontext变量,在每行上输出多个分隔分离的字段,并为文件的第一行构造合适的列标题。

    • 将具有两个以上维度的变量作为二维变量输出,并折叠尾随维度。

    • 对于具有是数字的,逻辑的字符,或分类内容细胞值的变量,输出每个单元作为一个单一的行,在多个分隔符分隔的字段的内容。如果细胞具有不同的数据类型,输出单个空字段。

    请勿使用'文本'或者“表格”文件类型,如果你需要写一个精确的检查点的高数组。

  2. 为了“铺”文件类型,在某些情况下,Parquet格式不能完全表示MATLAB表或时间表数据类型。如果你使用parquetread或者数据存储读取这些文件,那么结果可能不具有相同的格式或内容与原始高大表。有关更多信息,请参阅Apache的镶木数据类型映射

提示

  • 使用函数来创建检查点或者快照你的数据,你的工作,尤其是庞大的数据集时。这种做法允许直接从文件重建高大阵列在磁盘上,而不是重新执行所有所产生的高阵列的命令。

扩展能力

高大的数组
使用比内存更多的阵列计算更多行的阵列。

介绍了在R2016b