主要内容

matlab.tall.transform

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

描述

例子

TA.= matlab.tall.transform (fcnTX.应用函数句柄fcn每个的数组TX.并返回变换的阵列,TA.

例子

TA.= matlab.tall.transform (fcnTX.t,......)指定多个数组tX,泰,…这是输入的fcn.对每个数组的相同行进行操作fcn;例如,fcn (tX (n: m),泰(n: m,:)).具有高度的输入将传递给每个呼叫fcn

例子

TA.TB.,...) = matlab.tall.transform (fcnTX.t,......), 在哪里fcn一个函数返回多个输出,返回数组ta,tb,...,每个对应于其中一个输出参数fcn.所有输出的fcn必须有相同的高度,输出的数量必须与请求的数量相同matlab.tall.transform

例子

TA.TB.,...) = matlab.tall.transform (___、“OutputsLike”{paPB.,……})指定输出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 tall double column vector 8 8 21 13 4 59 3 11::

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

zeroslike = @(in)zeros(尺寸(in),'喜欢',在);

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

s = matlab.tall。变换(zerosLike tX)
s = Mx1 tall double column vector 0 0 0 0 0 0 0 0 0 0 0 0::

计算到达和出发延误的载体的平均总飞行延迟。

创建一个高的桌子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函数中每个数据块TX.t.结果是每个数据块中的平均总延迟。

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函数中每个数据块TX.t.结果是每行数据的最大到达或出发延迟,以及指示最大值来自哪个列的索引向量。1的索引表示该行的到达延迟较大,并且2的索引表示出发延迟更大。

[m,idx] = matlab.tall.transform(@maxdelay,tx,ty)
M = MX1高级双列向量12 8 2113 4 63 3 11:IDX = MX1高双列向量2 1 1 1 1 2 1 1::

使用“OutputsLike”选项,从中返回表matlab.tall.transform从输入表具有不同的变量。

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

t =高(表(rand(1e6,1),rand(1e6,1))))
T = 1,000000 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 = tablecidiff(tin)d = tin.var2  -  tin.var1;TIN.VAR3 = ABS(D);tout =锡;结束

使用matlab.tall.transform应用tableDiff函数中每个数据块T.由于输出表与输入表具有不同的变量,所以使用“OutputsLike”名称-值对,以提供与输出变量类似的原型表(三个变量具有默认名称var1var2, 和var3.).

z = matlab.tall.transform(@tablediff,t,“OutputsLike”,{表(1,1,1)})
Z = Mx3 tall table 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,…]来自高大维度的同一索引,假设高大的阵列是高层尺寸的不明显。例如,如果TX.t非单例是否在高维度中,那么第一组块可能是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;输入2])== [f(输入1);f(输入2)]:将该函数应用于输入的连接,应与将该函数分别应用于输入,然后将结果连接相同。

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

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

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

例子:ta = matlab.tall.transform(@(x)x。* 2,tx)指定一个匿名函数来相乘其中的值TX.到2。

例子: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.元素的值为每个块的大小阅读数据存储的属性,但块可能不是那么大小。出于目的matlab.tall.transform,一个高数组被认为是许多这样的块的垂直连接:

例如,如果您使用函数作为变换函数,其结果为和每一块.因此,不是返回元素之和返回单个标量值,而是结果是长度等于块的数量的向量。

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