我有一个大小为1134×1134的矩阵,我是从图像中获得的(使用imread
函数)。现在我想将图像分成3×3矩阵进行分析。为此,我尝试使用mat2cell
,如下所示。
image = imread('C:\Users\ka\Desktop\test\step.png');
X = mat2cell(image, [3], [3]);
但我收到了一个错误:
使用mat2cell出错(第97行) 输入参数D1到D2必须与输入矩阵大小的每个维度相加[1134 1134]。'
任何帮助都将不胜感激。
答案 0 :(得分:1)
错误消息确实说明了一切:mat2cell
的每个输入必须总和为整个图像的大小,在本例中为1134(和1134)。有关详细信息,请参阅documentation。
我相信你想要做的是:
sz = [1134 1134]; % size of input image
I = rand(sz); % make up some random data for testing
chunk_size = [3 3]; % your desired size of the chunks image is broken into
sc = sz ./ chunk_size; % number of chunks in each dimension; must be integer
% split to chunk_size(1) by chunk_size(2) chunks
X = mat2cell(I, chunk_size(1) * ones(sc(1),1), chunk_size(2) *ones(sc(2),1));
让我们检查输出是否符合要求:
size(X) % == sc
size(X{1}) % == chunk_size
sum(chunk_size(1) * ones(sc(1),1)) % 1134, as required
sum(chunk_size(2) * ones(sc(2),1)) % 1134, as required