哪种计算方式:cellfun还是for loop?
在很长一段时间里,人们一直在问它是否更适合使用cellfun或者对于循环执行某些计算。和生活中的许多事情一样,正确的答案是“视情况而定”。让我给你一些更深入的了解,以便你能做出正确的选择。
目录
函数句柄
如果正在调用的函数句柄cellfun评估需要很长时间,然后cellfun将无关紧要。所以没什么大不了的cellfun在这种情况下。
如果函数被调用cellfun是非常快,如issparse,您可能会遇到函数调用开销占主导地位的情况对于循环。
如果我知道输入和输出的数量以及我想应用元素的函数,我通常会写一个显式循环。然而,这可能不是你的偏好。请记住,您总是可以将想要编写的代码写入注释!
一组选定的函数
当cellfun最初是编写的,它可以处理一组固定的字符数组作为第一个输入,没有额外的灵活性。多年来,该功能已经进步。如果做然而,使用一个认可的固定字符数组(现在是标量字符串),您将获得与对于循环的版本。
以下是您可以作为第一个输入提供的字符串cellfun并期望高性能(从文档中的向后兼容性部分获得)cellfun:
- “我是空的”
- “逻辑性”
- “以色列”
- “长度”
- “ndims”
- “产品尺寸”
- “尺寸”
- “isclass”
使用这些字符串时有一些注意事项,包括
- cellfun不调用这些函数的任何重载版本
- cellfun('isclass',C,classname)返回逻辑1(真正的)对于每个元素C这和类名参数。此语法返回逻辑0(错误)对于属于的子类的对象类名称
你对cellfun的使用
你用什么cellfun?何时以及如何?第一个参数是什么?让我们知道在这里.
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。