主要内容

matlab.tall.transform

通过对数据块应用函数句柄来转换数组

描述

例子

TA= matlab.tall.transform (fcn,TX)应用函数句柄fcn每一个的数组TX并返回一个转化的阵列,TA

例子

TA= matlab.tall.transform (fcn,TX,TY,...)指定多个数组tX,泰,…是输入fcn。对每个数组的相同行进行操作fcn;例如,fcn (tX (n: m),泰(n: m,:))。一个高度输入被传递给每一个通话fcn

例子

(TA,结核病,……) = matlab.tall.transform (fcn,TX,TY,...),其中fcn是一个函数返回多个输出,返回数组TA,TB,...,每一个对应于的输出参数之一fcn。所有输出的fcn必须具有相同的高度,并且输出的数量必须与从matlab.tall.transform

例子

(TA,结核病,……) = matlab.tall.transform (___、“OutputsLike”{PA,PB,……})指定输出TA,TB,...具有与原型数组相同的数据类型PA,PB,...,分别。您可以在以前的语法中使用任何输入参数组合。

例子

全部折叠

使用matlab.tall.transform构建一个包含0的高数组,其属性类似于另一个数组。

创建一个高的桌子airlinesmall.csv数据集。该数据包含有关美国航班到达和离开时间的信息。提取ArrDelay变量,这是到达延迟的向量。

ds = tabularTextDatastore ('airlinesmall.csv',“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay
tX = Mx1高双列向量8 8 21 13 4 59 3 11:

编写一个匿名函数,创建一个0数组,其大小和数据类型与输入相同。

zerosLike = @(上)零(大小(在),'喜欢',在);

使用matlab.tall.transform应用zerosLike函数来到达延迟的向量。结果是相同大小的高矢量,但其值均为零。

s = matlab.tall。变换(zerosLike tX)
s = Mx1高双列向量

从计算到达和离开延迟的向量的平均总航班延误。

创建一个高的桌子airlinesmall.csv数据集。该数据包含有关美国航班到达和离开时间的信息。提取ArrDelayDepDelay变量,是到达和离开延误的矢量。

ds = tabularTextDatastore ('airlinesmall.csv',“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay;TY = tt.DepDelay;

meanDelay函数将输入向量串联成一个矩阵,对每行的值求和(忽略nan),然后计算平均值。显示该函数文件的内容。

类型meanDelay
函数D = meanDelay(a,b) X = [a b];Y =总和(X 2 ' omitnan ');D =意味着(Y);结束

使用matlab.tall.transform应用meanDelay函数到每个数据块中TXTY。其结果是在数据的每个块的平均总延迟。

d = matlab.tall.transform(@meanDelay,TX,TY)
d = 7x1高双列向量14.0621 11.1639 17.2311 15.1852 12.5860 19.8596 14.4036

此操作假定将每个数据块缩减为标量值的结果可以装入内存。对于非常大的数据集和使用较小块大小的数据集,这个假设可能不正确。

在每一行数据中查找最大值和该值的索引。

创建一个高的桌子airlinesmall.csv数据集。该数据包含有关美国航班到达和离开时间的信息。提取ArrDelayDepDelay变量,是到达和离开延误的矢量。

ds = tabularTextDatastore ('airlinesmall.csv',“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay;TY = tt.DepDelay;

maxDelay函数连接输入向量,然后它找到的最大到达或离开延迟持续时间和它的列索引。显示该文件的内容。

类型maxDelay
函数[M,I] = maxDelay(A,B) X = [A,B];[M,我]= max (X, [], 2);结束

使用matlab.tall.transform应用maxDelay函数到每个数据块中TXTY。其结果是,最大到达或离开延迟数据的每一行,以及表示最大值来自哪个列的索引向量。索引为1表示该行中的到达延迟较大,为2的指数指示出离开延迟是较大的。

[M,IDX] = matlab.tall.transform(@maxDelay,TX,TY)
M =的Mx1高大双列向量12 8 21 13 4 63 3 11:IDX =的Mx1高大双列矢量2 1 1 1 1 2 1 1:

使用“OutputsLike”选项返回一个表matlab.tall.transform有来自输入表不同的变量。

创建一个包含两个随机值变量的高表。

T =高(表(兰特(1e6,1),兰特(1e6,1)))
T = 1000000 x2高表Var1 Var2 ____ ____ 0.81472 0.90399 0.90579 0.94095 0.12699 0.80252 0.91338 0.24205 0.63236 0.97566 0.09754 0.31723 0.2785 0.81279 0.54688 0.69743::::

功能tableDiff计算两个输入表变量之间的差,并将结果作为一个新变量添加到表中。显示文件的内容。

类型tableDiff
功能TOUT = tableDiff(锡)d = Tin.Var2  -  Tin.Var1;Tin.Var3 = ABS(d);TOUT =锡;结束

使用matlab.tall.transform应用tableDiff函数到每个数据块中T。由于输出表与输入表具有不同的变量,因此使用“OutputsLike”名称-值对,以提供一个原型表,其中包含与输出类似的变量(三个变量使用默认名称)VAR1,VAR2VAR3)。

Z = matlab.tall.transform(@tableDiff,T,“OutputsLike”{表(1,1,1)})
Z = Mx3高表Var1 Var2 Var3 ____ ____ ________ 0.81472 0.90399 0.089267 0.90579 0.94095 0.035156 0.12699 0.80252 0.67553 0.91338 0.24205 0.67133 0.63236 0.97566 0.3433 0.09754 0.31723 0.21969 0.2785 0.81279 0.53429 0.54688 0.69743 0.15054::::::

输入参数

全部折叠

变换功能适用,指定为功能的手柄或匿名函数。的每个输出fcn必须与第一个输入的类型相同TX。你可以使用“OutputsLike”选项返回不同数据类型的输出。如果fcn返回多于一个的输出,然后输出必须全部具有相同的高度。

的一般功能签名fcn

[a, b, c,…]= fcn(x, y, z, ...)
fcn必须满足以下要求:

  1. 输入参数——输入[x, y, z,…]是适合内存的数据块。这些块是通过从各自的高阵列输入中提取数据而产生的[TX,TY,TZ,...]。输入[x, y, z,…]满足这些特性:

    • 所有的[x, y, z,…]具有在第一维尺寸相同任何允许的膨胀后。

    • 数据块[x, y, z,…]来自在高大尺寸相同的索引,假设高阵列nonsingleton在高大尺寸。例如,如果TXTY如果非单元素在高维度中,那么第一个块集可能是X = TX(1:20000,:)Y = TY(1:20000,:)

    • 如果任何的第一维[TX,TY,TZ,...]大小为1,然后是相应的块[x, y, z,…]由这个高数组中的所有数据组成。

  2. 输出参数——输出[a, b, c,…]都适合于存储块,要被发送到各自的输出[tA, tB, tC,…]。输出[a, b, c,…]满足这些特性:

    • 所有的[a, b, c,…]在第一个维度上必须有相同的大小。

    • 所有的[a, b, c,…]与以前调用的相应结果垂直连接到fcn

    • 所有的[a, b, c,…]在其各自的目的地输出阵列被发送到相同的索引在第一维。

  3. 功能性规则- - - - - -fcn必须满足函数规则:

    • F([输入1; inputs2])== [F(输入1);F(inputs2)]:将函数应用于输入的串联应该与将函数分别应用于输入,然后再连接结果相同。

  4. 空输入- 确保这件事fcn可以处理高度为0的输入。当文件为空或对数据进行了大量筛选时,可能会出现空输入。

例如,这个函数接受两个输入数组,对它们进行平方,然后返回两个输出数组:

函数[xx,yy] = sqInputs(x,y) xx = x.^2;yy = y ^ 2;结束
将该函数保存到一个可访问的文件夹后,可以调用该函数来进行square操作TXTY使用这个命令:
(助教、结核病)= matlab.tall.transform (tX, @sqInputs泰)

例子:TA = matlab.tall.transform(@(X)X * 2,TX)指定将值相乘的匿名函数TX2。

例子:tC = matlab.tall.transform (tX, @plus泰)指定一个函数句柄@加添加两个阵列在一起。

数据类型:function_handle

输入阵列,指定为标量,矢量,矩阵,或多维数组。输入阵列用作输入到指定的功能fcn。每个输入数组tX,泰,…必须有相容的高度。当两个输入具有相同的高度或当一个输入的高度为1时,两个输入具有兼容的高度。

输出数组的原型,指定为数组。当你指定“OutputsLike”时,输出阵列TA,TB,...返回的matlab.tall.transform具有与指定数组相同的数据类型{PA,PB,...}

例子:tX, tA = matlab.tall.transform (fcn OutputsLike, {int8 (1)});,其中TX是一个双精度数组,返回一个作为INT8而不是

输出参数

全部折叠

输出阵列,返回作为标量,矢量,矩阵,或多维数组。如果任一输入matlab.tall.transform身材高大,那么所有的输出参数也高。否则,所有的输出参数在存储器阵列。

输出阵列的大小和数据类型取决于所指定的功能fcn。一般情况下,输出TA,TB,...都必须具有与第一个输入相同的数据类型X。但是,您可以指定“OutputsLike”返回不同的数据类型。输出数组TA,TB,...都有相同的高度。

更多关于

全部折叠

高大阵列块

当从数据存储上创建一个高大的阵列,所述底层数据存储便于计算期间的数据的移动。在散块的数据移动称为要么,其中每个块是一组可以装入内存的连续行。例如,一个2-D数组的一个块(例如一个表)是X (n: m:)对于一些标n。每个块的大小是基于的值READSIZE数据存储的属性,但该块可能不正是大小。为宗旨matlab.tall.transform,一个tall数组被认为是许多这样的块的垂直连接:

例如,如果您使用函数作为变换函数,结果是和每块。因此,代替对元素的总和返回单个标量值,结果是与长度的矢量等于块的数目。

ds = tabularTextDatastore ('airlinesmall.csv',“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay;f = @(x) sum(x,'omitnan');s = matlab.tall。变换(f, tX);s =收集(s)
s = 140467 101065 164355 135920 111182 186274 21321

介绍了R2018b