2
我有格式的單元格:轉換向量單元陣列到二維矩陣 - MATLAB
A = {[1, 2]; ...
[3, 4, 5]; ...
[6, 7]};
我想提出一個矩陣蜂窩元素形成:
B = [1, 2, 0; ...
3, 4, 5; ...
6, 7, 0];
如何我能完成這個嗎?無論有無循環。
我有格式的單元格:轉換向量單元陣列到二維矩陣 - MATLAB
A = {[1, 2]; ...
[3, 4, 5]; ...
[6, 7]};
我想提出一個矩陣蜂窩元素形成:
B = [1, 2, 0; ...
3, 4, 5; ...
6, 7, 0];
如何我能完成這個嗎?無論有無循環。
下面是使用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
可以零墊所有陣列,使他們成爲長度相等,然後堆疊起來創建矩陣:
maxLen = max(cellfun('length', A));
B=cell2mat([cellfun(@(x) [x, zeros(1,maxLen-numel(x))], A,'uni',0)]);
「A」的元素是否總是成爲向量? – excaza