有人知道如何填充细胞阵列吗?对于常规(多维)数组,我可以使用函数
A = padarray(A,dim,value)
然而它不会接受细胞...... 一直在搜索,但我在文档或谷歌中找不到任何东西,我想在尝试重新编程padarray()接受细胞之前我会问...如果有人知道如何做到这一点,那将非常感激。
答案 0 :(得分:1)
您始终可以使用cellfun
将函数应用于单元格数组中的每个单元格:
padize = 2;
A = cellfun( @(x) padarray(x,padsize), A ,'uni', 0);
答案 1 :(得分:0)
我非常确定常规Matlab对于单元数组没有任何意义,就像它没有数字数据一样(padarray
属于图像处理工具箱)。这有多难取决于你需要它的通用性 - 基本的对称空填充固定数量维度案例是微不足道的:
function y = padcell2d(x, r)
y = cell(size(x) + r.*2);
y(r+1:end-r, r+1:end-r) = x;
end
根据需要添加复杂性。
因为想到处理任意维度的最简单方法很有趣,所以这里有一个非常简单的n维对称空填充方式,没有循环(在Octave上测试):
function x = padcell(x, r)
if any(r>0) && ~any(r<0)
if isscalar(r) % otherwise, assume it's a value-per-dimension vector
r = repmat(r, 1, ndims(x));
end
sz = num2cell(size(x) + 2*r);
x{sz{:}} = []; % hooray for comma-separated lists!
x = circshift(x, r);
end
end