我有一个矩阵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);
答案 0 :(得分:0)
要对单元格数组y
中的每个元素应用函数B
,请按如下所示使用cellfun
:
cellfun(@y, B, 'UniformOutput', false);
@y
是您编写的函数的句柄。它必须存在,以便在编写y(B{1})
时获得B
中第一个元素的正确输出。 cellfun
只是将该函数应用于单元格数组中的所有元素。这等效于在B
上编写循环。