在MATLAB中将函数转换为cellfun格式

时间:2018-09-08 15:41:19

标签: matlab function cell

我有一个矩阵A(32x8),为此,我编写了以下函数

function x = y(A)
 x=[A(:,1:2),isnan(A(:,3:5)),A(:,6:end)];
 x(sum((x==1),2)>0,:) = [];
  end

现在我有一个数组B(100x1),其中每个单元格都包含具有不同值的矩阵A(32x8),那么我该如何为MATLAB中数组中的所有单元格编写与上面相同的函数。

我尝试了以下方法

Class=cellfun(@(x) x{:,1:2},isnan{x{:,3:5}},x{:,6:end},B, 'UniformOutput', false);

1 个答案:

答案 0 :(得分:0)

要对单元格数组y中的每个元素应用函数B,请按如下所示使用cellfun

cellfun(@y, B, 'UniformOutput', false);

@y是您编写的函数的句柄。它必须存在,以便在编写y(B{1})时获得B中第一个元素的正确输出。 cellfun只是将该函数应用于单元格数组中的所有元素。这等效于在B上编写循环。