cell to double with mismatched dimensions
1 回表示 (過去 30 日間)
古いコメントを表示
Input:
a = cell(3,1);
a{1,1} = [1 2 3];
a{2,1} = [1 2 3 4];
a{3,1} = [1 2 3 4 5];
Desired output:
b = [[1 2 3 0 0];[1 2 3 4 0];[1 2 3 4 5]];
What would be the best way to get this output from this input?
0 件のコメント
採用された回答
Geoff Hayes
2016 年 8 月 29 日
編集済み: Geoff Hayes
2016 年 8 月 29 日
Jonathan - one way would be to use cellfun to apply a function to each element of your cell array padding each with zeros so that all arrays are of the same length. For example, we can get the maximum length as
maxLength = max(cellfun(@(x)length(x),a));
We would then use cellfun again to pad the arrays with zeros using repmat (which just repeats a matrix) as
aPadded = cellfun(@(x)[x repmat(0,1, maxLength - length(x))],a,'UniformOutput',false);
b = cell2mat(aPadded);
Try the above and see what happens!
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!