主要内容

cellfun

应用函数到单元格数组中的每个单元格

描述

例子

一个= cellfun (函数C应用函数函数到单元格数组中每个单元格的内容C,每次一个细胞。cellfun然后连接来自的输出函数到输出数组中一个,因此为的第Th元素CA(i) = func(C{i}).输入参数函数接受一个输入参数并返回标量的函数的函数句柄。的输出函数可以有任何数据类型,只要该类型的对象可以连接。数组一个还有单元格数组C尺寸一样。

您无法指定其中的顺序cellfun计算的元素一个或者依赖于它们以任何特定的顺序完成。

例子

一个= cellfun (函数, C1,…,Cn)适用于函数细胞的内容C1,…,Cn,所以A(i) = func(C1{i},…,Cn{i}).这个函数函数必须采取n输入参数并返回标量。单元格数组C1,…,Cn所有的尺寸必须相同。

例子

一个= cellfun (___名称,值适用于函数带有一个或多个指定的附加选项名称,值对参数。例如,要在单元格数组中返回输出值,请指定“UniformOutput”,假的.你可以回来一个作为单元格数组时函数返回不能连接到数组中的值。你可以使用名称,值将参数与前一种语法中的任何一种的输入参数配对。

例子

(A1,…,一个米]= cellfun (___返回多个输出数组A1,…,函数返回输出值。函数是否可以返回具有不同数据类型的输出参数,但每个输出的数据类型每次都必须相同函数被称为。您可以将此语法与前面语法的任何输入参数一起使用。

的输出参数的个数函数不必与指定的输入参数数目相同C1,…,Cn

例子

全部折叠

创建包含不同大小的数值数组的单元格数组。

C = {1:10, [2;4;6], []}
C =1×3单元格数组{[1 2 3 4 5 6 7…]} {3x1 double} {0x0 double}

计算每个数字数组的平均值,并返回数组中的平均值。

A = cellfun(@mean,C)
一个=1×35.5000 4.0000 NaN

创建两个包含不同大小的数值数组的单元格数组。

X = {5:5:100, 10:10:100, 20:20:100};Y = {rand(1,20), rand(1,10), rand(1,5)};

绘制数组。方法返回图表行对象的数组情节函数化并使用它们向每组数据点添加不同的标记。cellfun可以返回任何数据类型的数组,只要该数据类型的对象可以连接。

图保存p = cellfun(@plot,X,Y);(1页)。标志=“o”;(2页)。标志=“+”;(3页)。标志=“年代”;持有

图中包含一个轴对象。axis对象包含3个line类型的对象。

创建包含不同大小的数值数组的单元格数组。

C = {1:10, [2;4;6], []}
C =1×3单元格数组{[1 2 3 4 5 6 7…]} {3x1 double} {0x0 double}

计算中每个数组的大小C.行数和列数分别为1 × 3的数值数组。

[nrows,ncols] = cellfun(@size,C)
nrows =1×31 3 0
ncols =1×310 10 0

你可以使用cellfun将函数应用于字符向量的单元格数组和字符串数组。cellfun以相同的方式处理这两种数组。

创建包含工作日名称的字符向量单元格数组。

C = {“周一”“星期二”“星期三”“星期四”“星期五”
C =1 x5单元格{“周一”}{“周二”}{“星期三”}{“星期四”}{“星期五”}

为名称创建三个字母的缩写cellfun函数。指定一个提取前三个字符并将它们作为字符向量返回的函数。要返回单元格数组中的缩写,请指定“UniformOutput”,假的名称-值对。

A = cellfun(@(x) x(1:3),C,“UniformOutput”假)
一个=1 x5单元格{'星期一'}{'星期二'}{'星期三'}{'星期四'}{'星期五'}

你也可以打电话cellfun在字符串数组上。的兼容性,cellfun将字符串数组中的每个元素视为字符向量。如果指定一个返回文本的函数,则cellfun将它作为字符向量的单元格数组返回,而不是字符串数组。

为字符串数组中的名称创建缩写cellfun

STR = [“星期六”“星期天”
str =1 x2字符串“星期六”“星期天”
B = cellfun(@(x) x(1:3),str,“UniformOutput”假)
B =1 x2单元格“坐”{}{‘太阳’}

输入参数

全部折叠

函数应用于输入单元格数组的单元格内容,指定为函数句柄、字符向量或字符串标量。

函数可以对应多个函数文件,因此可以表示一组重载函数。在这些情况下,用MATLAB®根据输入参数的类确定调用哪个函数。

向后兼容性

你可以指定函数作为字符向量或字符串标量,而不是函数句柄,但仅用于有限的一组函数名。函数可以是:“isempty”“islogical”“伊斯雷尔”“长度”“ndims”“prodofsize”“大小”,或“isclass”

如果指定函数名而不是函数句柄:

  • cellfun不调用函数的任何重载版本。

  • 大小而且isclass函数需要对cellfun功能:

    A = cellfun('size',C,k)返回的大小k的每个元素的第Th维C

    A = cellfun('isclass',C,classname)返回逻辑1真正的)的每个元素C匹配类名称论点。此语法返回逻辑0 (的子类的对象类名称

例子:A = cellfun(@mean,C)的元素的平均值C

输入数组,指定为单元格数组或字符串数组。如果C是字符串数组吗cellfun处理的每个元素C就好像它是一个字符向量,而不是一个字符串。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:A = cellfun(@mean,C,'UniformOutput',false)返回的输出的意思是在单元格数组中。使用“UniformOutput”,假的名称值对,如果C包含数值矩阵和的意思是返回向量。

True或false,指定为逗号分隔的对,由“UniformOutput”,要么真正的1)或0).

的价值“UniformOutput”

描述

真正的1

函数必须返回标量吗cellfun连接成数组。

0

cellfun返回的输出函数在单元格数组中。的输出函数可以有任意大小和不同的数据类型。

函数捕获错误,指定为逗号分隔的对,由“ErrorHandler”和一个函数句柄。如果函数属性所指定的错误处理程序“ErrorHandler”捕获错误并执行函数中指定的操作。错误处理程序必须抛出错误或返回与函数.如果的值“UniformOutput”为true时,则错误处理程序的输出参数必须是标量,并且与的输出具有相同的数据类型函数

错误处理程序的第一个输入参数是一个包含以下字段的结构:

  • 标识符-错误标识符

  • 消息-错误消息文本

  • 指数-输入数组的线性索引函数抛出错误

错误处理程序的其余输入参数是调用的输入参数函数使函数抛出错误。

假设函数返回两个双精度变量作为输出参数。可以将错误处理程序指定为ErrorHandler, @errorFunc,在那里errorFunc引发警告并返回两个输出参数的函数。

function [A,B] = errorFunc(S,varargin) warning(S。标识符,S.message);A = NaN;B = NaN;结束

如果您没有指定“ErrorHandler”,然后cellfun重新抛出抛出的错误函数

输出参数

全部折叠

输出数组,作为任何数据类型的数组或单元格数组返回。

默认情况下,cellfun连接的输出函数变成一个数组。函数必须返回标量。如果函数返回对象,那么对象所属的类必须满足这些要求。

  • 金宝app支持通过对对象数组进行线性索引来赋值

  • 有一个重塑方法,该方法返回与输入大小相同的数组

的值“UniformOutput”名值对参数为0),然后cellfun返回单元格数组中的输出。在这种情况下,从的输出函数可以有任意大小和不同的数据类型。

扩展功能

版本历史

R2006a之前介绍