主要内容

将高数组写入本地和远程位置用于检查点

描述

例子

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

例子

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

例子

写(___名称,价值使用前面的任何语法使用一个或多个名称-值对参数指定附加选项。例如,可以指定文件类型“文件类型”和有效的文件类型('垫''seq''镶木地板''文本', 或者'电子表格'),也可以指定自定义写入函数来处理数据'writefcn'和功能手柄。

例子

全部收缩

将高阵列写入磁盘,然后通过为书面文件创建新数据存储来恢复高阵列。该过程可用于保存您的工作或与同事共享高大的数组。

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

ds =数据存储('airlinesmall.csv');ds.treatasmissing ='na';ds.SelectedVariableNames = {“月”“年”“唯一承运人”};tt =高(DS)
tt = M×3 tall table Month Year 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' 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)
写入高数据到文件夹C:\ ExampleData评估使用本地MATLAB会话高表达: - 通的1 1:在0.52秒评价完成在1.2秒完成

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

清楚的TT.dsDS2 =数据存储(位置);tt2 =高(DS2)
tt2 = M×3 tall table Month Year UniqueCarrier _________ _____________ 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN' 1 2008 'WN'::::::

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

ds = spepsheetdatastore('tsunamis.xlsx');t =高(DS)
T = MX20高大表纬度经度年月日时分秒ValidityCode有效性CauseCode原因EarthquakeMagnitude国家区MaxHeight IidaMagnitude强度NumDeaths DescDeaths ________ _________ ____ _____ ___ ____ ______ ______ ____________ _________________________ _________ __________________ ___________________ ___________________ __________________________ _________ _____________ _________ _________ __________ -3.8 128.3 1950年108 3 23纳米2 {'Chainsable海啸'} 1 {'地震'} 7.6 {'Indonesia'} {'Java Trench,Indonesia'} 2.8 1.5 1.5 NaN NaN 19.5 -156 1951 8 21 10 57 Nan 4 {'明确的海啸'} 1 {'地震'} 6.9 {'美国'} {'夏威夷'} 3.6 1.8纳米纳米-9.02 157.95 1951 12 22 22 32纳米南纳2 {“可疑的海啸”} 6 {'火山'}南{'Solomonislands'} {'kavachi'} 6 2.6纳米Nan NaN 42.15 143.85 1952 3 4 1 22 41 4 {'Demomations Tsunami'} 1 {'地震'} 8.1 {'日本'} {'SE。北海道岛} 6.5 2.7 2 33 1 19.1 -155 1952 3 17 3 58南4 {''''''''''''s's {'夏威夷'} 1 {'夏威夷'} {'夏威夷'} 1纳米南楠43.1 -82.41952年5 6南楠南1 {'非常值得怀疑的海啸'} 9 {'气象'}南{美国'} {'Huron,Mi'} 1.52纳米南纳352.75 159.5 1952 11 4 16 58南4 {''明确的海啸'} 1 {'地震'} 9 {'俄罗斯'} {'kamchatka'} 18 4.2 4 2236 3 50 156.5 1953 3 18南纳35 50 156.5 1953 3 18南楠3 {'可能的海啸'} 1 {'地震'} 5.8 {'俄罗斯} {'n。千岛群岛”} 1.5 0.6楠楠楠::::::::::::::::::::::::::::::::::::::::

结合了一年小时分钟, 和第二变量进入单个DateTime变量,然后从表中删除这些变量。删除包含缺失数据的任何行。

t.datetime = datetime(t.year,t.month,t.day,t.hour,t.minute,t.second);T(:,3:8)= [];tt = rmmissing(t)
TT = MX15高大表纬度经度ValidityCode有效期CauseCode原因EarthquakeMagnitude国家区MaxHeight IidaMagnitude强度NumDeaths DescDeaths日期时间________ _________ ____________ ____________________ _________ ____________________________ ___________________ _____________ ____________________________ _________ _____________ _________ _________ __________ ____________________ 42.15 143.85 4 { '确定海啸'} 1 { '地震'}8.1 { 'JAPAN'} {'SE。北海道 '} 6.5 2.7 2 33 1 04-MAR-1952 1点22分41秒58.34 -136.52 4 { '确定海啸'} 3 { '地震和滑坡'} 8.3 { 'USA'} {' SE。阿拉斯加,AK”} 524.26 4.6 5 5 1 10-JUL-1958 6点15分53秒-39.5 -74.5 4 { '确定海啸'} {1 '地震'} 9.5 {'智利} { '智利中部'} 254.6 4 1260 3 22可能 -  1960 19时11分十七秒-6.8 -80.7 4 { '确定海啸'} {1 '地震'} 6.8 { '秘鲁'} { '秘鲁'} 9 3.2 2.5 66 2 20  -  11月-1960 22时01分56秒61.1 -147.5 4 { '确定海啸'} 3 { '地震和滑坡'} 9.2 { 'USA'} { '威廉王子,AK'} 67 6.1 5 221 3 28-MAR-1964三点36分14秒38.65 139.2 4 { '确定海啸'} {1 '地震'} 7.5 { 'JAPAN'} {'NW。本州岛”} 5.8 2.7 2 26 1 16君1964 4时01分44秒0.2 119.8 4 { '确定海啸'} {1 '地震'} 7.8 { '印度尼西亚'} { 'BANDA SEA'} 10 3.3 3 2003 14  -  8  -  1968 -3.1二十二时14分19秒4 118.9 { '确定海啸'} {1 '地震'} 6.9 { '印度尼西亚'} { 'MAKASSAR海峡'} 4 2 2 600 3 23-FEB-1969 00:36:56::::::::::::::::::::::::::::::

将表格写入电子表格文件到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);

创建并使用自定义写入函数以不直接支持的附加格式写入数据金宝app,例如图像文件。

控件中的所有示例图像创建一个图像数据存储工具箱/ matlab / demos文件夹。所选图像具有扩展.jpg..tif., 和.png..将数据存储区转换为高级单元格数组。

demofolder = fullfile(matlabroot,'工具箱''matlab''演示');ds = imageDatastore (demoFolder,“文件扩展名”,{“jpg”'.TIF''.png'});t =高(DS);

将其中一个图像带入内存并显示它。

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

不直接支持的图像文金宝app件,所以对图像写出不同的格式,你必须创建一个新的函数来处理文件写入。书写功能接收来自两个输入写:

  • 信息是包含有关当前数据块的信息的字段的结构。您可以使用这些字段来构建您自己的唯一文件名,或者只是使用建议菲伦仑名称使用所建议的姓名的字段

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

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

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

将数据存储区中的图像写入名为的新文件夹exampleImages.在这一点C:\磁盘。(您可以使用不同的位置,特别是如果您不使用Windows®Computer。)通过ImageWriter.作为自定义写入功能使用'writefcn'名称-值对的论点。

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

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

dirC: \ exampleImages
.image_1_000001.jpg image_3_000001.jpg image_5_000001.jpg .. image_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中的远程位置®或亚马逊S3™。有关读取和写入远程位置的更多信息,请参阅与远程数据,

其他考虑因素适用于Hadoop®和apache spark™:

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

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

  • 在写入Apache Spark之前,请设置Spark_Home.环境变量到安装Apache Spart的文件夹。

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

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

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

例子:位置='文件:/// path / to / data'指定了一个绝对URI的文件夹路径。

数据类型:char|细绳

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

文件命名模式,指定为字符串或字符向量。文件命名模式必须包含一个要将文件写入其中的文件夹,然后是一个包含通配符的文件名. 这个函数用序号替换通配符,以确保唯一的文件名。

例子:写(“文件夹/ data_ * . txt”,tA)写高大的阵列TA作为一系列.txt文件in.文件夹文件名data_1.txtdata_2.txt., 等等。

数据类型:char|细绳

名称值对参数

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

例子:写( 'C:\ MYDATA的',TX, '文件类型', '文本', 'WriteVariableNames',FALSE)写高大的阵列TXC:\ mydata由于不使用变量名作为列标题的文本文件的集合。
常规选项

全部收缩

文件类型,指定为逗号分隔对,由“文件类型”和允许的文件类型之一:“汽车”'垫''镶木地板''seq''文本', 或者'电子表格'

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

  • 。垫对于MATLAB®数据文件

  • .Parquet.或者帕尔克先生镶木地板文件

  • .seq.对于序列文件

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

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

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

自定义编写功能,指定为逗号分隔的一对组成的'writefcn'和一个函数句柄。指定的函数从中接收数据块TA并负责创建输出文件。你可以使用'writefcn'名称 - 值对参数的写入数据中的各种格式,即使不直接支持输出格式。金宝app

功能性签名

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

功能MyWriter(信息,数据)

  • 数据包含来自的数据块TA

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

    描述
    必备位置 完全合格的路径到一个临时的输出文件夹。仅将文件写入到这个文件夹复制到最终目的地。
    RequiredFilePattern 输出文件名所需的文件模式。如果仅指定了文件夹名称,则此字段为空。
    建议菲伦仑名称 一个完全限定的、全局唯一的文件名,满足位置和命名要求。
    partitionIndex. 写入高阵列分区的索引。
    NumPartitions 高阵列中的分区总数。
    blockindexinpartition. 分区中当前数据块的位置。
    Isfinalblock. 真的如果当前块是分区的最终块。

文件命名

用于输出文件的文件名决定了输出文件的顺序数据存储稍后将文件读入。如果文件的顺序很重要,那么最佳实践是使用建议菲伦仑名称字段以命名文件,因为建议的名称保证了文件顺序。如果不使用建议的文件名,那么自定义写入功能必须创建全局唯一,正确有序的文件名。文件名应遵循概述的命名模式RequiredFilePattern.当与并行计算工具箱并行运行™,文件名必须是唯一的,正确排序的工人之间,即使每个工人写入自己的本地文件夹。

阵列具有多个分区

您可以将一个高的数组划分为多个分区,以方便使用并行计算工具箱在数组上并行运行计算。每个分区仍然由更小的块组成,每个块都可以装入内存。

信息包含几个与分区相关的字段:partitionIndex.NumPartitionsblockindexinpartition., 和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, data) filename = info. suggestedfilename;writetable(数据、文件名“文件类型”'电子表格'结束
调用dataWriter作为一些数据的写入函数TT.,使用这些命令。
tt = tall(array2table(rand(5000,3)));位置=“/ tmp / MyData / tt_ * .xlsx”;写(位置,TT,'writefcn',@datawriter);
对于每个街区,dataWriter函数使用建议的文件名信息结构和呼叫writetable编写电子表格文件。建议的文件名考虑了所指定的文件命名模式地点论点

数据类型:function_handle

文本或电子表格文件

全部收缩

用于将变量名称作为列标题的指示符,指定为逗号分隔对'writevariamblenames'和一个数字或逻辑1真的) 或者0错误的)。

指标

行为

真的

包含可变名称作为输出的列标题。(默认)

错误的

输出中不包含变量名称。

用于编写日期的区域设置,指定为逗号分隔的配对组成“DateLocale”和字符矢量或字符串标量。写作时约会时间值的文件,使用datelocale.指定区域设置应该写一个月和一周的名称和缩写。字符矢量或字符串采用表格XX._yy., 在哪里XX.是指示语言的小写ISO 639-1双字母代码yy.是大写的ISO 3166-1 alpha-2代码,表示国家。有关区域设置的公共值列表,请参见地区的名称 - 值对参数约会时间函数。

对于Excel.®文件,写入包含的变量约会时间阵列作为Excel日期并忽略了“DateLocale”参数值。如果是约会时间变量包含在1900或1904年之前的年份,然后将变量写入文本。有关Excel日期的详细信息,请参见1900年和1904年Excel的日期系统之间的差异

例子:'datelocale','ja_jp'或者'datelocale',“ja_jp”

数据类型:char|细绳

仅限文本文件

全部收缩

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

说明符

字段分隔符

','

“逗号”

逗号(默认)

“”

'空间'

空间

'\ t'

'标签'

标签

';'

“半成品”

分号

'|'

'酒吧'

垂直条

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

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

写入引用文本的指示,指定为逗号分隔对“推广”和任何一种错误的或者真的.如果“推广”设置为真的,然后将文本括在双引号中,并替换任何具有两个双引号字符的文本的一部分的双引号字符。例如,看到将引号写入CSV文件

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

与文件关联的字符编码方案,指定为逗号分隔对,由“编码”'系统'或一个标准字符编码方案名称,如该表中的一个值。当您没有指定任何编码或指定编码为时'系统',函数使用您的系统默认编码来编写文件。

'Big5'

'ISO-8859-1'

'窗口-874'

'big5-hkscs'

'ISO-8859-2'

“windows - 949”

'cp949'

'ISO-8859-3'

'窗口-1250'

“EUC-KR”

'ISO-8859-4'

'窗口-1251'

“EUC-JP”

'ISO-8859-5'

'Windows-1252'

'euc-tw'

'ISO-8859-6'

'窗口-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”

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

仅限电子表格文件

全部收缩

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

如果图纸不存在,则加上在工作表收集结束一个新的工作表。如果片材是一种指数大于工作表的数量大,则追加空工作表,直到工作簿中的工作表数等于工作表索引。无论哪种情况,生成警告,指示它已添加新工作表。

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

例子:'床单'2

例子:'床单''MySheetName'

数据类型:char|细绳|单身的|双倍的|INT8.|int16|INT32.|INT64.|uint8.|uint16|UINT32.|UINT64

拼贴文件仅限

全部收缩

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

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

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

一般来说,'snappy'具有更好的性能阅读和写作,'gzip的'具有更高的压缩比,但代价是更多的CPU处理时间,以及'brotli'通常以压缩速度为代价生成最小的文件大小。

例子:写('c:\ mydata',tx,'filetype','parquet','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'有关支持地板格式的外部应用程序的最广泛兼容性。金宝app

警告

Parquet 1.0版本有一个限制,它不能往返类型的变量UINT32.(它们被读回MatlabINT64.)。

限制

在某些情况下,写(位置,T, '文件类型',类型)创建不代表原始数组的文件T完全正确。如果你使用数据存储(位置)若要读取文件,则结果可能与原始高表的格式或内容不同。

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

    • 使用以下命令输出数值变量格式和明确的,字符或字符串变量为不带引号的文本。

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

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

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

    不要使用'文本'或者'电子表格'文件类型如果需要编写高阵列的精确检查点。

  2. 为了'镶木地板'文件类型,也有一些情况下,实木复合地板格式不能完全代表MATLAB表或时间表的数据类型。如果你使用帕奎德书或者数据存储若要读取文件,则结果可能与原始高表的格式或内容不同。有关更多信息,请参见Apache Parquet数据类型映射

提示

  • 使用函数来创建检查站或者快照特别是在处理庞大的数据集时。这种做法允许您直接从磁盘上的文件重构高数组,而不是重新执行生成高数组的所有命令。

扩展能力

高阵列
使用具有大于内存容量的行数的数组进行计算。

介绍了R2016b