matlab.tall.transform
通过对数据块应用函数句柄来转换数组
语法
描述
例子
应用函数到高向量
使用matlab.tall.transform
构建具有与另一个数组相似属性的零的高数组。
创建一个高的桌子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::
编写一个匿名函数,创建一个大小和数据类型与输入相同的零数组。
zerosLike = @(in) 0 (size(in),“喜欢”,);
使用matlab.tall.transform
申请zerosLike
对到达延迟向量的函数。结果是一个相同大小的tall向量,但其值都为零。
S = matlab.tall。变换(zerosLike tX)
s = Mx1高双列向量0 0 0 0 0 0 0 0::
对两个向量进行变换
从到达和离开延误的向量计算平均总航班延误。
创建一个高的桌子airlinesmall.csv
数据集。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay
而且DepDelay
变量,它们是到达和离开延迟的向量。
ds = tabularTextDatastore(“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt.ArrDelay;tY = tt.DepDelay;
的meanDelay
函数将输入向量连接到一个矩阵中,对每一行的值求和(忽略nan),然后计算平均值。显示该函数文件的内容。
类型meanDelay
函数D = meanddelay (a,b) X = [a b];Y = sum(X,2,'omitnan');D = mean(Y);结束
使用matlab.tall.transform
申请meanDelay
函数中的每个数据块tX
而且泰
.结果是每个数据块中的平均总延迟。
D = matlab.tall。transform(@ meanddelay, tX, tY)
D = 7x1高双列向量14.0621 11.1639 17.2311 15.1852 12.5860 19.8596 14.4036
此操作假定将每个数据块缩减为一个标量值的结果可以装入内存。对于超大数据集和使用小块大小的数据集,这种假设可能不成立。
应用多输出函数
找出每一行数据中的最大值和该值的索引。
创建一个高的桌子airlinesmall.csv
数据集。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay
而且DepDelay
变量,它们是到达和离开延迟的向量。
ds = tabularTextDatastore(“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};Tt =高(ds);tX = tt.ArrDelay;tY = tt.DepDelay;
的maxDelay
函数连接输入向量,然后查找最大到达或离开延迟时间及其列索引。显示该文件的内容。
类型maxDelay
function [M,I] = maxDelay(A,B) X = [A B];[M,I] = max(X,[],2);结束
使用matlab.tall.transform
申请maxDelay
函数中的每个数据块tX
而且泰
.结果是每一行数据的最大到达或离开延迟,以及指示最大值来自哪一列的索引向量。指数为1表示该行的到达延迟较大,指数为2表示出发延迟较大。
[M, idx] = matlab.tall。transform(@maxDelay, tX, tY)
M = Mx1高双列向量12 8 21 13 4 63 3 11::idx = Mx1高双列向量21 11 12 11::
不同变量的输出表
使用“OutputsLike”
返回一个表的选项matlab.tall.transform
它与输入表有不同的变量。
用两个随机值的变量创建一个高表。
T =高(兰特(1e6,1),兰特(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 = tableDiff(Tin) d = Tin。Var2 - Tin.Var1;锡。Var3 = abs(d);Tin;结束
使用matlab.tall.transform
申请tableDiff
函数中的每个数据块T
.由于输出表与输入表具有不同的变量,因此使用“OutputsLike”
名称-值对提供一个原型表,其变量与输出相似(三个变量具有默认名称)Var1
,Var2
,Var3
).
Z = matlab.tall。变换(@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.9754 0.31723 0.21969 0.2785 0.81279 0.53429 0.54688 0.69743 0.15054::::::
输入参数
fcn
- - - - - -转换函数以应用
函数处理|匿名函数
将函数转换为应用,指定为函数句柄或匿名函数。的每个输出fcn
必须与第一个输入的类型相同tX
.您可以使用“OutputsLike”
选项返回不同数据类型的输出。如果fcn
返回多个输出,则所有输出必须具有相同的高度。
的一般功能签名fcn
是
[a, b, c,…]= fcn(x, y, z, ...)
fcn
必须满足这些要求:
输入参数-输入
[x, y, z,…]
是适合内存的数据块。这些块是通过从相应的高数组输入中提取数据来生成的[tX, tY, tZ,…]
.输入[x, y, z,…]
满足以下属性:所有的
[x, y, z,…]
在任何允许的扩展后,在第一个维度中具有相同的大小。数据块
[x, y, z,…]
来自高维度中的相同索引,假设高数组在高维度中是非单例的。例如,如果tX
而且泰
在高维度是非单块的,那么第一组块可能是x = tX(1:2000,:)
而且y = tY(1:2000,:)
.如果任何一个的第一个维度
[tX, tY, tZ,…]
大小为1
,则对应的块[x, y, z,…]
由高数组中的所有数据组成。
输出参数-输出
[a, b, c,…]
是块,适合在内存中,被发送到各自的输出[tA, tB, tC,…]
.输出[a, b, c,…]
满足以下属性:所有的
[a, b, c,…]
必须在第一维度中有相同的大小。所有的
[a, b, c,…]
是否垂直连接到之前调用的各自结果fcn
.所有的
[a, b, c,…]
发送到各自目标输出数组中第一个维度中的相同索引。
功能规则- - - - - -
fcn
必须满足函数规则:F ([inputs1;inputs2) == [F(inputs1);F (inputs2))
:将函数应用于输入的连接应该与将函数分别应用于输入,然后将结果连接相同。
空输入-确保
fcn
可以处理高度为0的输入。当文件为空或对数据进行了大量过滤时,可能会出现空输入。
例如,这个函数接受两个输入数组,对它们进行平方,然后返回两个输出数组:
函数[xx,yy] = sqInputs(x,y) xx = x.^2;Yy = y.^2;结束
tX
而且泰
使用这个命令:[tA,tB] = matlab.tall.transform(@sqInputs,tX,tY)
例子:tA = matlab.tall.transform(@(x) x .* 2, tX)
指定用于相乘的匿名函数tX
由2。
例子:tC = matlab.tall.transform(@plus,tX,tY)
指定函数句柄@plus
将两个数组相加。
数据类型:function_handle
tX
,泰
- - - - - -输入数组
标量|向量|矩阵|多维数组
输入数组,指定为标量、向量、矩阵或多维数组。输入数组用作指定函数的输入fcn
.每个输入数组tX,泰,…
必须有兼容的高度。当两个输入具有相同的高度时,或者当一个输入的高度为1时,它们具有兼容的高度。
巴勒斯坦权力机构
,PB
- - - - - -输出数组原型
数组
输出数组的原型,指定为数组。当你指定“OutputsLike”
,输出数组助教,结核病,…
返回的matlab.tall.transform
具有与指定数组相同的数据类型{PA、PB,…}
.
例子:tA = matlab.tall.transform(fcn,tX,'OutputsLike',{int8(1)});
,在那里tX
是双精度数组,返回一个
作为int8
而不是双
.
输出参数
助教
,结核病
-输出数组
标量|向量|矩阵|多维数组
输出数组,以标量、向量、矩阵或多维数组的形式返回。如有任何输入matlab.tall.transform
,那么所有输出参数也都是高的。否则,所有输出参数都是内存中的数组。
输出数组的大小和数据类型取决于指定的函数fcn
.一般来说,输出助教,结核病,…
必须都具有与第一个输入相同的数据类型吗X
.但是,您可以指定“OutputsLike”
返回不同的数据类型。输出数组助教,结核病,…
都有相同的高度。
更多关于
高阵列块
从数据存储创建高数组时,底层数据存储有助于在计算期间移动数据。数据以离散块的形式移动,称为块或块,其中每个块是一组连续的行,可以放入内存中。例如,一个2-D数组(如表)的一个块为X (n: m:)
,用于一些下标n
而且米
.的值为基础ReadSize
属性,但块的大小可能不完全相同。为了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中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。