我在Matlab中有一个6x3函数数组dens
,其中每个函数都有一个二维向量z
作为输入。我需要同时在z=[2 3]
评估这些函数;我试过了
ev_dens = @(z) cellfun(@(myfun) myfun(z),dens,'UniformOutput',false);
z =[2 3];
ev_dens(z)
但是我收到了这个错误
??? Index exceeds matrix dimensions.
Error in ==> @(myfun)myfun(z)
Error in ==> @(z)cellfun(@(myfun)myfun(z),dens,'UniformOutput',false)
你能帮帮我吗?
答案 0 :(得分:2)
使用以下示例数据:
f{1,1} = @(z)([z(1),z(1)])
f{1,2} = @(z)([z(1),z(2)])
f{2,1} = @(z)([z(2),z(1)])
f{2,2} = @(z)([z(2),z(2)])
z = [2,3];
您的方法运行正常:
cellfun(@(F)F(z), f,'UniformOutput',false)
所以听起来好像你在dens
的一个函数中有错误。尝试嵌套for循环并查看错误的位置:
for ii = 1:size(dens,1)
for jj = 1:size(dens,2)
dens{ii,jj}(z)
end
end
然后在收到错误后检查ii
和jj
的值,dens{ii,jj}
处的函数中包含错误。
为了纠正你在评论中提到的问题(即你的一些单元格元素是空的(即[]
),首先运行此函数将空单元格转换为输出空单元格的函数: / p>
dens(cellfun(@isempty,dens)) = {@(z)([])}