以 Structfun 作为功能的 Cellfun?

Cellfun with Structfun as function?

我的数据采用结构元胞数组的形式。我正在尝试实现一个 cellfun 调用,该调用将 structfun 作为其函数,最终会将结构中所有向量的大小调整为传入的大小。例如。我有一个 4 元胞数组,每个元胞数组都有一个包含一个向量的结构(一旦我弄清楚,将是多个向量),我想将每个向量的大小从 index1 调整为 index2

fun = function(foo, index1, index2) 
cellfun(@structfun(@(x) x(index1:index2), foo, 'UniformOutput',false), foo, 'UniformOutput', false)

我是否必须执行循环并将第一个 "foo" 替换为 "foo(i)" 才能到达所有单元格?提前致谢。

你不能那样内联 structfun。您需要创建一个调用 structfun 的临时函数句柄并在 cellfun 中使用它。

sf = @(y) structfun(@(x) x(1:2), y, 'UniformOutput',false); 
cellfun(sf, foo, 'UniformOutput', false);

您可以在一行中执行此操作,如下所示。但为了便于阅读,最好将其分为两行。

cellfun(@(y) structfun(@(x) x(1:2), y, 'UniformOutput',false), foo, 'UniformOutput', false);