Matlab:将函数应用于4D矩阵的每个块

时间:2015-04-23 17:49:38

标签: matlab

我有一个包含图像序列的矩阵,我想将一个函数应用于该序列的每个块。矩阵的大小为[480 640 3 56],块的大小为[8 8 1 8]。 blockproc仅支持图片。该函数返回一个大小相同的块,因此结果将是另一个具有相同大小的序列。

1 个答案:

答案 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 )