gpt4 book ai didi

matlab - 使用 Cellfun 对单个数组多次执行函数

转载 作者:行者123 更新时间:2023-12-02 09:32:02 27 4
gpt4 key购买 nike

我希望使用 cellfun 类似于使用 bsxfun 在 nx1 单元和 1x1 单元上应用函数,即 bsxfun,

multi = bsxfun(@times, rand(1,10), 2)

但是,当在 cellfun 中执行类似操作时,它会提示单元格大小不同。我该如何解决这个问题?

用于单元格示例:

我的实际问题非常简单,我可以看到一些其他方法来解决这个问题,但我最初的直觉是使用 cellfun。无法将我带到这里。这是我的实际问题,

use_var = {[0,1,0,1,1,1,1,0]}; rule_dep = {[1,3],[1,2,4],[3,5,7],[5],[4,8]};

我现在希望通过每个单独的rule_dep对use_var进行索引。我的第一次尝试是,

use_rule = cellfun(@(x,y) y{x}, rule_depend, use_var, 'Uniformoutput', false);

但会引发尺寸问题。

最佳答案

诀窍是定义一个函数句柄,它返回 rule_dep 的任何元素的预期结果

use_var = [0,1,0,1,1,1,1,0] %must be a array, not cell
use_rule = cellfun(@(x) use_var(x), rule_dep, 'Uniformoutput', false)

cellfun 中不提供诸如单例维度扩展之类的功能。请记住 cellfun and arrayfun are often slower than a for-loop.最好的解决方案可能是一个简单的循环。

关于matlab - 使用 Cellfun 对单个数组多次执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008728/

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