洛伦谈MATLAB的艺术

将想法转化为MATLAB

哪种计算方式:cellfun还是for loop?

在很长一段时间里,人们一直在问它是否更适合使用cellfun或者对于循环执行某些计算。和生活中的许多事情一样,正确的答案是“视情况而定”。让我给你一些更深入的了解,以便你能做出正确的选择。

目录

函数句柄

如果正在调用的函数句柄cellfun评估需要很长时间,然后cellfun将无关紧要。所以没什么大不了的cellfun在这种情况下。

如果函数被调用cellfun是非常快,如issparse,您可能会遇到函数调用开销占主导地位的情况对于循环。

如果我知道输入和输出的数量以及我想应用元素的函数,我通常会写一个显式循环。然而,这可能不是你的偏好。请记住,您总是可以将想要编写的代码写入注释!

一组选定的函数

cellfun最初是编写的,它可以处理一组固定的字符数组作为第一个输入,没有额外的灵活性。多年来,该功能已经进步。如果然而,使用一个认可的固定字符数组(现在是标量字符串),您将获得与对于循环的版本。

以下是您可以作为第一个输入提供的字符串cellfun并期望高性能(从文档中的向后兼容性部分获得)cellfun:

  • “我是空的”
  • “逻辑性”
  • “以色列”
  • “长度”
  • “ndims”
  • “产品尺寸”
  • “尺寸”
  • “isclass”

使用这些字符串时有一些注意事项,包括

  • cellfun不调用这些函数的任何重载版本
  • cellfun('isclass',C,classname)返回逻辑1(真正的)对于每个元素C这和类名参数。此语法返回逻辑0(错误)对于属于的子类的对象类名称

你对cellfun的使用

你用什么cellfun?何时以及如何?第一个参数是什么?让我们知道在这里.




与MATLAB®R2019b一起发布

|

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。