2016-11-23 249 views
2

我有格式的單元格:轉換向量單元陣列到二維矩陣 - MATLAB

A = {[1, 2]; ... 
    [3, 4, 5]; ... 
    [6, 7]}; 

我想提出一個矩陣蜂窩元素形成:

B = [1, 2, 0; ... 
    3, 4, 5; ... 
    6, 7, 0]; 

如何我能完成這個嗎?無論有無循環。

+0

「A」的元素是否總是成爲向量? – excaza

回答

3

下面是使用bsxfun'小號掩蔽能力的一種方法 -

function out = cell1D_to_mat2D(A) 

lens = cellfun('length',A); 
out = zeros(max(lens),numel(lens)); 
mask = bsxfun(@le,[1:max(lens)]',lens(:)'); 
out(mask) = [A{:}]; 
out = out.'; 

採樣運行 -

>> A={[1,2];[3,4,5];[6,7];[5,9,5,8,7]}; 
>> cell1D_to_mat2D(A) 
ans = 
    1  2  0  0  0 
    3  4  5  0  0 
    6  7  0  0  0 
    5  9  5  8  7 
2

可以零墊所有陣列,使他們成爲長度相等,然後堆疊起來創建矩陣:

maxLen = max(cellfun('length', A)); 
B=cell2mat([cellfun(@(x) [x, zeros(1,maxLen-numel(x))], A,'uni',0)]);