在单元格中展开图像,MATLAB

时间:2015-05-11 03:29:46

标签: matlab matrix

我有一个包含两个字段的结构label_test。第一个是360x1单元阵列face_test,其中每个单元格包含一个88x72的面部图像。第二个字段是单元格数组mtable<-data.frame(date,t.1,t.2,m.result, stringsAsFactors = FALSE) ,其中包含每个面的标签。

我想要做的是将每个360个单元格中的每个面部图像转换为列向量 - 也就是说,我想将order转换为6336 x 360矩阵,其中每列代表展开脸部图像。我是matlab的新手,不知道如何在没有一堆循环的情况下做到这一点,我猜这是不必要的。有人能给我一个解决这个问题的简单方法吗?

2 个答案:

答案 0 :(得分:1)

一个简单的循环应该足够快,因为你事先知道尺寸

A = % .. this is your cell array of data cell(360,1)
B = zeros(numel(A{1}), length(A)); % or zeros(6336, 360)
for i = 1 : length(A)
   B(:, i) = reshape(A{i}, [], 1);
end

答案 1 :(得分:0)

好的,这是Matlab的功能可以提供帮助的地方。代码是

face_data.face_test = reshape(cell2mat(face_data.face_test), [], numel(face_data.face_test));

您可以通过测试此代码轻松检查这是否是您想要的:

s = struct('a', cell(1), 'b', cell(1));
s.a = {reshape(1:9, 3, []), 9+reshape(1:9, 3, []), 18+reshape(1:9, 3, [])}
reshape(cell2mat(s.a), [], numel(s.a))