matlab 元胞阵列中的单线如何工作?

How does a one liner in matlab cell array works?

SUBSAMPLE = 2; % Subsample your image by this much
for person_num = 1:40
  for sample_num = 1:10
  filename = ['orl_faces/s' num2str(person_num) '/'  num2str(sample_num) '.pgm'];
    if sample_num < 8
      img = imread(filename);
      [m,n] = size(img);
      imagetrain{person_num,sample_num} = img(1:SUBSAMPLE:m,1:SUBSAMPLE:n)(:);
    else
      img = imread(filename);
      imagetest{person_num,sample_num} = img(1:SUBSAMPLE:m,1:SUBSAMPLE:n)(:);
    end
  end
end

以上是来自面部识别的matlab代码的代码片段。我是 matlab 的新手,因此我试图理解对我来说不熟悉的陈述。我的问题是,imagetrain 和 imagetest 正在从 img() 分配一些东西。谁能向我解释一下 img() 分配给矩阵的是什么?对我来说,它看起来像是一个单调的东西。

img是使用imread加载的图片。

代码 img(1:SUBSAMPLE:m,1:SUBSAMPLE:n) 对图像进行子采样并减小其大小。结果是一个新图像(即新矩阵),行数和列数都更少。

前导 (:) 将矩阵转换(整形)为列向量。 所以,比如原图是256*256,二次采样后的图像就是128*128,经过(:)就变成了128*128=16384个元素的列向量。