我有一个包含图像序列的矩阵,我想将一个函数应用于该序列的每个块。矩阵的大小为[480 640 3 56],块的大小为[8 8 1 8]。 blockproc
仅支持图片。该函数返回一个大小相同的块,因此结果将是另一个具有相同大小的序列。
答案 0 :(得分:1)
首先将原始数据重塑为必要的大小。然后你可以使用我的自定义cubes2cell.m函数,然后使用cellfun
在每个多维数据集上执行你的函数。
function C = cubes2cell( A )
%% cubes2cell( A )
%
% Inputs
% A - Matrix to split into cube matrices stored as cells
%
% Outputs
% C - Cell with each element a sequential row of A
%% Use mat2cell to perform conversion with appropriate dimensions
C = squeeze( mat2cell( A, size(A,1), size(A,2), size(A,3), ones(1,size(A,4)) ) );
假设您的数据位于M
,并且您的函数名为fun
。然后你可以使用:
result = cellfun( @fun, cubes2cell( M ), 'UniformOutput', false )