簡體   English   中英

將向量的單元格數組轉換為2D矩陣-MATLAB

[英]Convert a cell array of vectors to a 2D matrix - 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)]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM