如果使用上面的代码的大小为15不完全整除(假设160),您将收到以下错误在MATLAB:
输入参数,D1到D2,必须总和为每个维度的输入矩阵大小,[160 160]。'
因此,您必须将mat2cell
总和的第二个和第三个输入参数设为160.然后完成。从here
blockSize=[15 15];
wholeBlockRows = floor(size(newIm,1)/ blockSize(1));
blockVectorR = [blockSize(1) * ones(1, wholeBlockRows), rem(size(newIm,1), blockSize(1))];
wholeBlockCols = floor(size(newIm,2)/ blockSize(2));
blockVectorC = [blockSize(2) * ones(1, wholeBlockCols), rem(size(newIm,2), blockSize(2))];
% sum of blockVectorR and blockVectorC will be equal to size(newIm,1) and
% size(newIm,2) respectively.
ca = mat2cell(newIm, blockVectorR, blockVectorC, size(newIm,3));
采取
代码在你的输出单元阵列,你会看到最后的行和列,其中行或列(或两者)都等于子图像:rem(size(newIm,1), blockSize(1))
或(和)rem(size(newIm,2), blockSize(2))
快速简洁。谢谢! – Cassie 2014-09-28 10:34:41