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个元素的列向量。
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个元素的列向量。