Matlab中cellfun函数的使用

Compute the mean of each vector in cell array C.

C = {1:10, [2; 4; 6], []};

averages = cellfun(@mean, C)
This code returns

averages =
    5.5000    4.0000       NaN

.............................................................

  该函数就是专门对cell数组进行操作的,个人认为是代替了传统的for循环,和C语言不一个思想,主要是行列化矩阵,一次处理。

  比如a = {[1 2 3] [4 5 6]},那么cellfun(@length,a)得到6。线cell2mat也可以吧,然后分别计算,在累加。

Compute the size of each array in C, created in the previous example.

[nrows, ncols] = cellfun(@size, C)
This code returns

nrows =
     1     3     0
ncols =
    10     1     0

  ..........................................................

  cellfun中使用自定义函数对cell数组进行处理;既然可以自定义函数,那么cellfun中的的中间部分的参数个数和自定义函数需要的参数数目相同。

  还能这么用。

queryNearestNeighborIds = cellfun( @(vector, index) vector(index), queryCandidateIds, queryNearestNeighborIds, 'UniformOutput', false );
	

  ................................................

Create a cell array that contains strings, and abbreviate those strings to the first three characters. Because the output strings are nonscalar, set UniformOutput to false.

days = {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'};

abbrev = cellfun(@(x) x(1:3), days, 'UniformOutput', false)
The syntax @(x) creates an anonymous function. This code returns

abbrev = 
    'Mon'    'Tue'    'Wed'    'Thu'    'Fri'
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`cellfun` 函数MATLAB 一种非常有用的函数,它可以对 cell 数组进行逐个元素的操作。`cellfun` 函数对每一个 cell 数组元素应用一个特定的函数,然后将每个函数的结果合并为一个数组。 `cellfun` 函数的语法如下: ``` B = cellfun(fun,A) B = cellfun(fun,A,'UniformOutput',false) B = cellfun(fun,A1,...,An) B = cellfun(fun,A1,...,An,'UniformOutput',false) ``` 其 `fun` 是要应用于每个元素的函数句柄或函数名称。`A` 是要处理的 cell 数组。`B` 是处理结果的数组。如果 `UniformOutput` 参数设置为 `true`(默认值),则 `B` 是一个标量或数组,其每个元素都是 `fun` 函数的结果。如果 `UniformOutput` 参数设置为 `false`,则 `B` 是一个 cell 数组,其每个元素都是 `fun` 函数的结果。 下面是一个简单的例子,演示了如何使用 `cellfun` 函数将一个 cell 数组的每个字符串都转换为大写: ```matlab % 创建一个 cell 数组 strs = {'hello', 'world', 'from', 'matlab'}; % 使用 cellfun 函数将每个字符串转换为大写 upper_strs = cellfun(@upper, strs, 'UniformOutput', false); % 显示结果 disp(upper_strs); ``` 该代码将输出以下内容: ``` 'HELLO' 'WORLD' 'FROM' 'MATLAB' ``` 在上面的代码,`@upper` 是一个函数句柄,表示将每个字符串转换为大写。`UniformOutput` 参数设置为 `false`,因此 `upper_strs` 是一个 cell 数组,其每个元素都是一个字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值