主要内容

Cellfun.

将功能应用于单元格数组中的每个单元格

描述

例子

一个= Cellfun(funC适用该功能fun到单元阵列的每个单元格的内容C,一次一个牢房。Cellfun.然后从中连接输出fun进入输出阵列一个,所以为此一世Th元素Ca(i)= func(c {i})。输入论点fun是一个函数的函数掌握,它需要一个输入参数并返回标量。输出从fun可以有任何数据类型,只要该类型的对象可以连接。阵列一个和细胞阵列C具有相同的大小。

您无法指定订单Cellfun.计算一个或者依靠他们以任何特定的顺序完成。

例子

一个= Cellfun(fun,c1,...,cn)适用fun到细胞的内容C1,...,CN, 以便a(i)= func(c1 {i},...,cn {i})。功能fun一定要拿N输入参数并返回标量。细胞阵列C1,...,CN一切都必须具有相同的大小。

例子

一个= Cellfun(___名称,价值适用fun具有一个或多个指定的其他选项名称,价值对论点。例如,要在单元格数组中返回输出值,请指定'统一输出',false。你可以回来一个作为一个单元格数组fun返回无法连接到数组中的值。您可以使用名称,价值对参数与上一个语法中的任何一个的输入参数。

例子

[A1,...,AM] = Cellfun(___返回多个输出阵列A1,......,AM什么时候fun回报m输出值。fun可以返回具有不同数据类型的输出参数,但每个输出的数据类型每次都必须相同fun叫做。您可以使用此语法与先前语法的任何输入参数。

来自的输出参数的数量fun不必与输入参数的数量不一样C1,...,CN

例子

全部收缩

创建包含不同大小的数字阵列的单元格数组。

c = {1:10,[2;4;6],[]}
C =1×3个单元阵列{[1 2 3 4 5 6 7 8 9 10]} {3x1 double} {0x0 double}

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

a = cellfun(@均值,c)
A =1×3.5.5000 4.0000纳米

创建包含不同大小的数字阵列的两个单元阵列。

X = {5:5:100,10:10:100,20:20:100};y = {rand(1,20),兰特(1,10),兰特(1,5)};

绘制数组。返回一系列图表行对象阴谋函数并使用它们向每组数据点添加不同的标记。Cellfun.可以返回任何数据类型的阵列,只要该数据类型的对象可以连接。

图持有p = cellfun(@ plot,x,y);p(1).marker ='o';p(2).marker ='+';p(3).marker =';抓住离开

图包含轴。轴包含3个类型的线。

创建包含不同大小的数字阵列的单元格数组。

c = {1:10,[2;4;6],[]}
C =1×3个单元阵列{[1 2 3 4 5 6 7 8 9 10]} {3x1 double} {0x0 double}

计算每个数组的大小C。行数和列数为1×3数字阵列。

[nrows,ncols] = cellfun(@ size,c)
nrows =.1×3.1 3 0.
ncols =.1×3.10 1 0.

您可以使用Cellfun.将函数应用于字符向量的单元格阵列和字符串数组。Cellfun.相同地处理两种数组。

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

c = {'周一''周二''周三''周四''星期五'}
C =1x5细胞{'周一周二周三周四周五'}

使用该名称为名称创建三个字母的缩写Cellfun.功能。指定提取前三个字符的函数,并将其作为字符向量返回。要在单元格数组中返回缩写,请指定'统一输出',false名称值对。

a = cellfun(@(x)x(1:3),c,'统一输出',错误的)
A =1x5细胞{'mon'} {'tue'} {'thu'} {'thu'} {'thu'} {'fri'}

你也可以打电话Cellfun.在字符串数组上。兼容性,Cellfun.处理字符串阵列的每个元素,如它是字符向量。如果您指定返回文本的函数,则Cellfun.将其作为字符向量的单元格数组返回,而不是字符串数组。

使用字符串数组中的名称创建缩写Cellfun.

str = [“周六”“星期日”]
str =1x2字符串“星期六星期天”
b = cellfun(@(x)x(1:3),str,'统一输出',错误的)
B =1x2细胞{'周六周日'}

输入参数

全部收缩

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

fun可以对应于多个函数文件,因此可以表示一组重载的功能。在这些情况下,Matlab®基于输入参数的类确定要调用哪个函数。

向后兼容性

您可以指定fun作为字符向量或字符串标量,而不是函数句柄,但仅用于有限的一组函数名称。fun可:'是空的''islogical''是真实的''长度''ndims''prodofsize''尺寸', 或者'Isclass'

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

  • Cellfun.不调用任何函数的过载版本。

  • 尺寸islass.功能需要额外的输入Cellfun.功能:

    a = Cellfun('size',c,k)返回沿着尺寸K.每个元素的维度C

    a = Cellfun('IsClass',C,ClassName)返回逻辑1真的)对于每个元素C与之匹配班级名称争论。此语法返回逻辑0(错误的)对于作为子类的对象班级名称

例子:a = cellfun(@均值,c)返回元素的手段C

输入数组,指定为单元数组或字符串数​​组。如果C是一个字符串数组,然后Cellfun.对待每个元素C好像它是一个字符向量,而不是一个字符串。

名称值对参数

指定可选的逗号分离对名称,价值论点。姓名是参数名称和价值是相应的价值。姓名必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:a = cellfun(@均值,c,'serialOutput',false)返回输出意思是在单元格阵列中。使用'统一输出',false名称 - 值对如果C包含数字矩阵和意思是返回向量。

真假,指定为逗号分隔的配对组成'统一输出'和任何一种真的1) 或者错误的0.)。

的价值'统一输出'

描述

真的1

fun必须返回标量Cellfun.连接到数组中。

错误的0.

Cellfun.返回输出fun在细胞阵列中。输出fun可以有任何尺寸和不同的数据类型。

捕获错误的功能,指定为逗号分隔对组成'ErrorHandler'和一个功能手柄。如果fun抛出错误,然后指定的错误处理程序'ErrorHandler'捕获错误并采取函数中指定的操作。错误处理程序必须丢失错误或返回相同数量的输出fun。如果是值'统一输出'是真的,那么错误处理程序的输出参数必须是标量并且具有与输出相同的数据类型fun

错误处理程序的第一个输入参数是具有这些字段的结构:

  • 标识符- 错误标识符

  • 信息- 错误消息文本

  • 指数- 线性索引进入输入阵列fun扔掉错误

错误处理程序的剩余输入参数是呼叫的输入参数fun制作了fun抛出错误。

认为fun返回两个双打作为输出参数。您可以指定错误处理程序'ErrorHandler',@ errorfunc, 在哪里errorfunc.是一个提出警告的函数并返回两个输出参数。

功能[a,b] = errorfunc(s,varargin)警告(s.identifier,s.message);a = nan;B =楠;结尾

如果您未指定'ErrorHandler', 然后Cellfun.rethrows抛出的错误fun

输出参数

全部收缩

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

默认,Cellfun.从中串联输出fun进入一个阵列。fun必须返回标量。如果fun返回对象,然后是对象所属的类必须满足这些要求。

  • 万博1manbetx通过线性索引向对象数组进行支持分配

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

如果值的价值'统一输出'名称 - 值对参数是错误的0.), 然后Cellfun.在单元格数组中返回输出。在这种情况下,来自的输出fun可以有任何尺寸和不同的数据类型。

扩展能力

在R2006A之前介绍