表达式是:
for i=1:n
X(:,i) = [P{i}(:)];
end
其中X是DxN矩阵,P是单元阵列。
答案 0 :(得分:3)
reshape(cat(3,P{:}),[numel(P{1}) n])
当然,上述解决方案只是为了好玩。我建议对两种解决方案进行分析,如果它具有显着的性能优势,则仅使用此解决方案。
维护和可读性也是编写代码时需要考虑的重要因素。
答案 1 :(得分:1)
你可能可以逃脱:
P{1} = [ 1 2; 3 4];
P{2} = [ 7 8; 9 10];
P{3} = [ 11 12; 13 14];
X = [P{:}]
X =
1 2 7 8 11 12
3 4 9 10 13 14
然后某种reshape()来到你想去的地方。
答案 2 :(得分:1)
如果您通过mat2cell
获取了单元格数组,则可能需要将图像块排列到数组X
的列中。这可以使用命令IM2COL
%# rearrange the large array so that each column of X
%# corresponds to the 4 pixels of each 2-by-2 block
X = im2col(largeArray,[2 2],'distinct');