varfun
将函数应用于表或时间表变量
描述
例子
应用元素函数
对表的变量定义并应用一个元素函数,以对所有元素进行平方。
定义一个包含数值变量的表。
一个=表([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
一个=5×2表Var1 Var2 _____ _____ 0.71 0.23 -2.05 0.12 -0.35 -0.18 -0.82 0.23 1.57 0.41
定义匿名函数来查找输入的平方。
Func = @(x) x.^2;
将函数应用于表中的所有变量一个
。
B = varfun(func,A)
B =5×2表Fun_Var1 Fun_Var2 ________ ________ 0.5041 0.0529 4.2025 0.0144 0.1225 0.0324 0.6724 0.0529 2.4649 0.1681
的变量B
是否有基于函数和变量名称的名称一个
。
应用从向量返回标量的函数
计算5 × 2表格中每个变量的平均值。
定义一个包含数值变量的表。
一个=表([0.71;-2.05;-0.35;-0.82;1.57],[0.23;0.12;-0.18;0.23;0.41])
一个=5×2表Var1 Var2 _____ _____ 0.71 0.23 -2.05 0.12 -0.35 -0.18 -0.82 0.23 1.57 0.41
定义匿名函数来查找输入的平均值。
Func = @mean;
函数
使用现有的MATLAB®函数来定义操作。
将函数应用于表中的所有变量一个
。
B = varfun(func,A)
B =1×2表mean_Var1 mean_Var2 _________ _________ - 0.188 - 0.162
B
是包含每个变量的平均值的表。若要返回数值向量而不是表,可以使用B = varfun(func,A,'OutputFormat','uniform')
。
将函数应用于变量内的组
计算表中变量的组均值,一个
,并将它们作为行返回到表中,B
。
创建一个表,其中一个变量定义组。
A = table({“test2”;“test1”;“test2”;“test3”;“test1”},…(0.71; -2.05; -0.35; -0.82; 1.57], [0.23; 0.12; -0.18; 0.23; 0.41])
一个=5×3表Var1 Var2 Var3 _________ _____ _____ {' test2} 0.71 0.23 {test1的}-2.05 - 0.12 {test2的}-0.35 - -0.18{‘test3} -0.82 - 0.23 1.57 - 0.41 {test1的}
定义匿名函数来查找输入的平均值。
Func = @mean;
函数
使用现有的MATLAB®函数来定义操作。
将该函数应用于定义的每组数据Var1
。
B = varfun(func,A,“GroupingVariables”,“Var1”)
B =3×4表Var1 GroupCount mean_Var2 mean_Var3 _________ __________ _________ _________ {' test1的}2 -0.24 - 0.265 {test2的}2 0.18 - 0.025{‘test3} 1 -0.82 - 0.23
B
包含一个名为GroupCount
表示表中条目的数量一个
在那一组中。
将函数应用于时间表变量内的组
创建包含示例数据的时间表。时间表的行时间也定义了组。
Dt = datetime(2016,1,1)+days([0 1 1 2 3 3])';=时间表(dt, [0.71; -2.05; -0.35; -0.82; 1.57; 0.09),…[0.23; 0.12; -0.18; 0.23; 0.41; 0.02),…“VariableNames”, {“x”“y”})
一个=6×2时间表dt x y ___________ __________ 2016年1月1日0.71 0.23年2月1日-2016年2.05 0.12年2月1日-2016年0.35 -0.18年3月1日-2016年0.82年0.23年4月1日1.57 0.41年4月1日-2016年0.09 0.02
计算时间表中变量的群体均值。varfun
返回B
作为时间表,因为一个
是一个时间表。将行时间指定为分组变量时,不能将任何变量指定为另一个分组变量。
B = varfun(@mean,A;“GroupingVariables”,“dt”)
B =4×3的时间表dt GroupCount mean_x mean_y ___________ __________ ______ ______ 01 - 2016年1月——1 0.71 0.23 02 - 1月- 2016 2 -1.2 - -0.03 03 - 1月- 2016年1月1 -0.82 - 0.23 04 - - 2016 2 0.83 - 0.215
输入参数
函数
- - - - - -函数
函数处理
函数,指定为函数句柄。您可以在文件中定义该函数,也可以将其定义为匿名函数。如果函数
对应于多个函数文件(即if)函数
表示一组重载函数),MATLAB®根据输入参数的类确定要调用哪个函数。
使用“OutputFormat”、“细胞”
名称-值对参数,如果函数函数
接受一个输入参数,并在每次调用时返回具有不同行数的数组。否则,函数
必须返回具有相同行数的数组。
例子:Func = @(x) x.^2;
计算输入的每个元素的平方。
一个
- - - - - -输入表
表格|时间表
输入表格,指定为表格或时间表。
名称-值参数
指定可选的参数对为Name1 = Value1,…,以=家
,在那里名字
是参数名和吗价值
是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字
在报价。
例子:“数据源”,2
中的第二个变量一个
作为输入函数
。
数据源
- - - - - -的变量选择说明符一个
传递给函数
正整数|正整数向量|字符串数组|特征向量|字符向量的单元数组|模式
标量|逻辑向量|函数处理
的变量选择说明符一个
传递给函数
,指定为由“数据源”
一个正整数,正整数的向量,字符串数组,字符向量,字符向量的单元数组,模式
标量、逻辑向量或函数句柄。
如果你指定“数据源”
作为函数句柄,它必须返回一个逻辑标量,并且varfun
只传入变量一个
函数返回1
(真正的
)。
GroupingVariables
- - - - - -中的一个或多个变量一个
它定义了行组
正整数|正整数向量|字符串数组|特征向量|字符向量的单元数组|模式
标量|逻辑向量
中的一个或多个变量一个
定义行组,指定为由逗号分隔的对组成的“GroupingVariables”
一个正整数,正整数的向量,字符串数组,字符向量,字符向量的单元数组,模式
标量,或逻辑向量。
的价值“GroupingVariables”
指定哪些表变量是分组变量,而不是它们的数据类型。分组变量可以是数字,也可以是数据类型分类
,calendarDuration
,datetime
,持续时间
,逻辑
,或字符串
。
行一个
具有相同分组变量值的组属于同一组。varfun
适用于函数
的每个变量中的每一组行一个
,而不是每个变量。
如果任何分组变量包含南
S或缺失值(如NaT
S、未定义的分类值或缺失的字符串),则相应的行不属于任何组,并从输出中排除。
行标签可以是分组变量。中的一个或多个变量可以单独对行标签进行分组一个
,或者行标签和变量一起。
如果
一个
是一个表,那么标签就是行名。如果
一个
是一个时间表,然后标签是行时间。
输出,B
,输入的每一组行对应一行,一个
。
如果你指定
“OutputFormat”、“制服”
或“OutputFormat”、“细胞”
,则输出具有对应于输入表变量的列函数
被应用于。如果你指定
“OutputFormat”、“表”
或“OutputFormat”、“时间表”
,则输出有:变量对应于输入表中的变量
函数
被应用于。与分组变量对应的变量。
一个新变量,
GroupCount
,其值是输入的行数一个
在每一组中。
OutputFormat
- - - - - -的格式B
“表”
(默认)|“时间表”
|“统一”
|“细胞”
的格式B
,指定为由“OutputFormat”
或者是值“统一”
,“表”
,“时间表”
,或“细胞”
。
|
如果 |
|
如果 |
|
|
|
|
ErrorHandler
- - - - - -调用if的函数函数
失败
函数处理
调用if的函数函数
失败,指定为由“ErrorHandler”
还有一个函数句柄。定义此函数,以便它重新抛出错误或返回函数的有效输出函数
。
MATLAB用两个输入参数调用指定的错误处理函数:
包含以下字段的结构:
标识符
错误的标识符。
消息
错误消息文本。
指数
发生错误的变量的索引。
名字
发生错误的变量的名称。
函数的输入参数集合
函数
在错误发生的时候。
例如,
函数[A, B] = errorFunc(S, varvarin) warning(S.)标识符,S.message) A = NaN;B = NaN;
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
该函数支持tall数组,但有金宝app以下限制:
的
函数
输入必须总是返回一个tall数组。金宝app支持的名称-值对有:
“数据源”
-不能指定为函数句柄或模式表达式。“GroupingVariables”
—Value不能为模式表达式。“OutputFormat”
-值可以是“统一”
,“表”
,“时间表”
,或“细胞”
只有。
当输入数组是一个高时间表和
“OutputFormat”
是“时间表”
,指定的函数必须返回一个第一维大小与输入相同的数组。指定“OutputFormat”
作为“表”
当输入函数为约简函数时,如的意思是
。
有关更多信息,请参见高大的数组。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
函数句柄输入,
函数
,必须是常数。而函数句柄可以作为
varfun
本身,它们不能作为入口点函数的输入。指定函数
在用于代码生成的代码中。有关更多信息,请参见代码生成的函数句柄限制(MATLAB编码器)。所有名称-值参数的值必须是常量。
的值
“数据源”
和“GroupingVariables”
名称-值参数不支持模式表达式。金宝app的
“ErrorHandler”
代码生成不支持名称-值参数。金宝app不支持可变大小的输入参数。金宝app
在生成的代码中,分组变量不能有重复的值。
的值
“OutputFormat”
作为“细胞”
如果您指定“GroupingVariables”
参数指定的每个变量返回不同的数据类型“数据源”
。如果输入是一个时间表,你指定
“GroupingVariables”
,那么输出的总是一个不规则的时间表。如果指定组,而组的数量在编译时未知,并且该数字为零,则输出中的空双变量在生成的代码中可能具有1 × 0的大小。在MATLAB中,这些变量的大小为0 × 0。
版本历史
在R2013b中引入
MATLAB命令
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。