主要内容

cdfread

从通用数据格式(CDF)文件读取数据

语法

数据= cdfread(文件名)
Data = cdfread(filename,param1,val1,param2,val2,…)
[data,info] = cdfread(文件名,…)

描述

数据= cdfread(文件名从指定的通用数据格式(CDF)文件中读取所有数据文件名.指定文件名作为字符串标量或字符向量。CDF数据集通常包含一组特定数据类型的变量,每个变量都有一组相关的记录。变量可以表示时间值,每个记录表示记录观察的特定时间。cdfread返回单元格数组中的所有数据,其中每列表示一个变量,每行表示与某个变量关联的记录。如果变量有不同数量的关联记录,cdfread使用CDF文件中定义的填充值来填充行以创建矩形单元格数组。

请注意

因为cdfread创建临时文件,当前工作目录必须是可写的。

数据= cdfread(文件名param1val1param2val2,……)从文件读取数据,其中param1param2,等等,可以是这个表中列出的任何参数。

[data,info] = cdfread(文件名,……)的CDF文件的详细信息信息结构。

参数 价值
“记录”

指定要读取哪些记录的向量。记录编号以零为基础。cdfread返回一个单元格数组,其行数与读取的记录数相同,列数与变量数相同。

“变量”

1 -nn-by-1单元格数组,指定要从文件中读取的变量的名称。n必须小于或等于文件中变量的总数。cdfread返回一个单元格数组,其列数与读取的变量数相同,并且为每个读取的记录返回一行。

“片”

一个-by-3数组,其中每行指定从何处开始读取变量的特定维度,在该维度上使用的跳过间隔(每个项,每个其他项,等等),以及在该维度上读取的值的总数。必须小于或等于变量的维数。如果小于总维数,cdfread从未指定的维度([0 1n,在那里n维度中元素的总数。

注意:因为“片”参数描述如何处理单个变量,它必须与“变量”参数。

“ConvertEpochToDatenum”

一个布尔值,用于确定是否cdfread自动转换CDF历元数据类型到MATLAB®序列号。如果设置为(默认),cdfread在MATLAB中包装epoch值cdfepoch对象。

备注:读取大数据集时,为了获得更好的性能,可将该参数设置为真正的

注意:如果使用“ConvertEpochToDatenum”参数时,不能使用“DatetimeType”参数。

“DatetimeType”

的返回类型的字符串标量或字符向量CDF_TIME_TT2000而且CDF_EPOCH数据类型。如果设置为“datetime”(默认为CDF_TIME_TT2000),cdfread以类型返回值datetime;如果设置为“本地”cdfread返回CDF_TIME_TT2000作为类型的值int64而且CDF_EPOCH作为类型的值

注意:如果使用“DatetimeType”参数时,不能使用“ConvertEpochToDatenum”参数。

“CombineRecords”

一个布尔值,决定如何操作cdfread返回从文件中读取的CDF数据集。如果设置为(默认),cdfread对象中存储数据——- - - - - -n单元格数组,其中是记录的数量和n请求的变量数。如果设置为真正的cdfread将特定变量的所有记录合并到输出单元格数组中的一个单元格中。在这个单元格中,cdfread将标量数据存储为列数组。cdfread扩展非标量和字符串数据的维数。例如,与其为每条记录创建1000个包含20 × 30数组的元素,cdfread将所有记录作为1000 × 20 × 30数组存储在一个单元格中。

注意:如果使用“记录”参数来指定要读取哪些记录,则不能使用“CombineRecords”参数。

注意:使用时“变量”参数读取一个变量,如果“CombineRecords”参数是真正的cdfread返回数据为——- - - - - -n数字或字符数组;它不会将数据放入单元格数组中。

请注意

要提高处理大型数据文件时的性能,请使用“ConvertEpochToDatenum”而且“CombineRecords”选项。

请注意

为了提高性能,关闭CDF库在打开文件时默认执行的文件验证。有关更多信息,请参见cdflib.setValidate

例子

全部折叠

从CDF文件中读取所有数据。

数据= cdfread(“example.cdf”);

从CDF变量中读取数据“时间”

数据= cdfread(“example.cdf”“变量”, {“时间”});

读取第一个维度中的第一个值,第二个维度中的第二个值,第三个维度中的第一个和第三个值,以及CDF变量剩余维度中的所有值“多维”

数据= cdfread(“example.cdf”“变量”, {“多维”},“片”, [0 1 1;11 11 1;0 2 2]);

这类似于将整个变量读入数据然后使用矩阵索引。

数据= cdfread(“example.cdf”“变量”, {“多维”});数据{1}(1、2、3 [1],:);

折叠数据集中的记录,并将CDF历元数据类型转换为MATLAB串行日期。

数据= cdfread(“example.cdf”“CombineRecords”,真的,“ConvertEpochToDatenum”,真正的);

这个例子展示了如何使用cdfread阅读CDF_TIME_TT2000数据。

在示例CDF文件中探索数据。

信息= cdfinfo(“example_364.cdf”);信息。变量
ans =8×6单元格数组列1到5{‘时间’}{[1]}{[24]}{“时代”}{' T /}{经度的}{[2 2]}{[1]}{‘int8}{“F /英尺”}{“纬度”}{[2 2]}{[1]}{‘int8} {F / TF的}{‘数据’}{[2 2 4]}{[1]}{“双重”}{' T / TTT}{“多维”}{[2 2 3 4]}{[1]}{‘uint8} {' T / TTTT}{“温度”}{2[3]}{[10]}{‘int16} {' T / TT}{‘multiInt8}{[2 3]}{[2]}{‘int64} {' T / TT}{‘tt2000}{[1]}{[8]}{‘tt2000} {' T /}列6{‘满载’}{‘满载’}{‘满载’}{‘满载’}{‘满载’}{‘满载’}{“完整”}{‘满载’}

CDF_TIME_TT2000数据和检查第三、第四和第五项。

tt2000Data = cdfread(“example_364.cdf”“变量”“tt2000”);tt2000Data {3:5}
ans =datetime2016 - 12 - 31 - t23:59:59.100200300z
ans =datetime2016 - 12 - 31 - t23:59:60.100200300z
ans =datetime2017 - 01 - 01 - t00:00:00.100200300z

这个例子展示了如何使用cdfread阅读CDF_TIME_TT2000原生形式的数据为CDF_TIME_TT2000时间戳,然后将这些时间戳分解为单独的时间组件。

在示例CDF文件中探索数据。

信息= cdfinfo(“example_364.cdf”);信息。变量
ans =8×6单元格数组列1到5{‘时间’}{[1]}{[24]}{“时代”}{' T /}{经度的}{[2 2]}{[1]}{‘int8}{“F /英尺”}{“纬度”}{[2 2]}{[1]}{‘int8} {F / TF的}{‘数据’}{[2 2 4]}{[1]}{“双重”}{' T / TTT}{“多维”}{[2 2 3 4]}{[1]}{‘uint8} {' T / TTTT}{“温度”}{2[3]}{[10]}{‘int16} {' T / TT}{‘multiInt8}{[2 3]}{[2]}{‘int64} {' T / TT}{‘tt2000}{[1]}{[8]}{‘tt2000} {' T /}列6{‘满载’}{‘满载’}{‘满载’}{‘满载’}{‘满载’}{‘满载’}{“完整”}{‘满载’}

CDF_TIME_TT2000原生形式的数据,并将数据分解为单独的时间组件。

tt2000Data = cdfread(“example_364.cdf”“变量”“tt2000”“DateTimeType”“本地”);timeArr = cdflib.breakdownTT2000([tt2000Data{:}])
timeArr =9×82016 2016 2016 2016 2017 2017 2017 2017 12 12 12 12 12 1 1 1 1 1 31 31 31 31 31 1 1 1 1 23 23 23 23 23 00 00 0 59 59 59 00 00 0 57 58 59 60 01 23 100 100 100 100 100 100 100 100 100 100 200 200 200 200 200 200 300 300 300 300 300 300 300 300 300 300 300

限制

  • cdfread函数不支持非ascii编码的数据。万博1manbetxCDF文件中的所有变量名、属性名、变量值和属性值必须采用7位ASCII编码。试图读取非ascii编码的文件会导致错误或字符损坏的数据。

版本历史

R2006a之前介绍

全部展开