gpt4 book ai didi

matlab - 什么时候以及为什么我应该在 Matlab 中使用 cellfun?

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:02 30 4
gpt4 key购买 nike

我对 MATLAB 中的 cellfun 函数有疑问。

什么时候/为什么我应该使用它,什么时候我也可以放弃它?

一个简单的例子:假设我有一个单元格 a,我想求出 a 中所有值的平均值。

a{1} = [1 2;3 4];
a{2} = [1 2 3;4 5 6; 7 8 9];

我的方法是这样的:

mean([a{1}(:); a{2}(:)])

合适的 cellfun 版本是什么,有没有更好的版本?

我试过这样做,(显然行不通):

mean_a = mean(cellfun(@mean, a,'UniformOutput',0))

谢谢!

最佳答案

cellfun 就像遍历单元矩阵和
在每个单元格上分别执行指定的功能。
它通常比明确地做同样的事情要快
在循环中,但基本区别在于它很容易
写入和读取 - 它立即清楚调用是什么
正在做。但您也可以自己编写循环。

在您的特定情况下,您可以这样使用 cellfun:

mean_a = mean(cellfun(@(x) mean(x(:)), a));

如果你有成千上万的细胞,你想做点什么
对于它们中的每一个,您要么使用循环,要么使用 cellfun
顺便说一句:@(x) 意味着你想要每个单元格的内容
被理解为 x 以便 mean(x(:)) 给你什么
你想要 - 单元格的整个矩阵内容的平均值。

关于matlab - 什么时候以及为什么我应该在 Matlab 中使用 cellfun?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16573816/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com