我的数据是结构的单元格数组的形式。我正在尝试实现一个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)"能够到达所有细胞?提前致谢。
答案 0 :(得分:1)
你不能像这样内联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);