Trying to convert cell to array when cells have range of values
1 回表示 (過去 30 日間)
古いコメントを表示
I have a 1x1000 cell that I am trying to convert to an array so I can easily copy out all the columns and rows of data. Unfortunately, in each cell there are doubles that vary in length (80x1 double, 81x1 double, 79x1 double) I tried cell2mat but since they are all different lengths that did not work.
What if any function may do what I am trying to do and fill in the void spaces with placeholders that are not 0?
Thank you in advance.
0 件のコメント
採用された回答
Rik
2018 年 5 月 11 日
This should do the trick. It assumes array indexing is possible.
a={[1 2 3]',[1 1]',[1 2 3 4 5 6]'};
maxlen=max(cellfun('length',a));
clc
a2=cellfun(@extend_to_maxlength,...
a,repmat({maxlen},size(a)),...
'UniformOutput',false);
a2=cell2mat(a2);
function x=extend_to_maxlength(x,maxlen)
if numel(x)<maxlen
x(maxlen)=0;
end
end
0 件のコメント
その他の回答 (1 件)
Ameer Hamza
2018 年 5 月 11 日
編集済み: Ameer Hamza
2018 年 5 月 11 日
try this:
% creating test data
a{1} = 1:4;
a{2} = 1:5;
a{3} = 1:10;
% solution
maxElements = max(cellfun(@length, a)); % finding maximum length of appropriate padding of zeros
matrix = cellfun(@(x) [x(:);zeros(maxElements-length(x), 1)], a, 'UniformOutput', 0);
matrix = cell2mat(matrix);
1 件のコメント
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!