将单元格数组中的某些元素连接到数值数组中 - MATLAB

时间:2014-10-16 17:09:41

标签: matlab cell-array

我有一个嵌套的单元格数组A,例如A1 x 6个单元格。

A的每个单元格都包含另一个单元格数组(例如A{1} = 1 x n单元格)。

A{1}{1}的每个单元格都包含其他单元格数组A{1}{1} = 1 x n单元格

我想在一个独特的数组中列出单元格的内容。

A = cell(1,2);
A{1} = cell(1,2);
A{2} = cell(1,1);
A{1}{1} = [{1} {2}];
A{1}{2} = [{3} {4}];
A{2}{1} = [{5} {6}];

vec = [];
for i = 1 : size(A,2)

 for j = 1 : size(A{1,i},2)
    vec = [vec; cell2mat(A{1,i}{1,j}(:,2))];
 end

end

vec = [2;4;6]

有没有办法避免for循环?

由于

1 个答案:

答案 0 :(得分:1)

看这是否适合你 -

A_horzcat = horzcat(A{:})
out = cell2mat(vertcat(A_horzcat{:}))
vec = out(:,2)

另一种方法(单行!我更喜欢它) -

vec = arrayfun(@(x) x{1}{2}, [A{:}]).'