Cell2Mat for cells with different dimensions
37 次查看(过去 30 天)
显示 更早的评论
Hi all
i have a cell array like this: C={(21 24 47 89 57)' , ( 24 21)' , (16 87 47 89 90 99 182)'} i want to obtain a matrix like that:
21 24 16
24 21 87
A= 47 0 47
89 0 89
57 0 90
0 0 99
0 0 182
How can i do that?
Thank you for the help
Regards
1 个评论
Sara Boznik
2020-8-16
The idea is that you first find the longest vector, second step is that you creat matrix of all 0, so if you have n vectors and the longest vector contain m elements: A=zeros(m,n). Than you should transponse every vector to column vector. And write something like that: if exist C(i,j), A(i,j)=C(i,j).
But I don't know how to do it because I get error because of different dimension in C.
Hope that I somehow helped you.
Best of luck.
采纳的回答
Star Strider
2020-8-16
编辑:Star Strider
2020-8-16
Try this:
C={[21 24 47 89 57]' , [24 21]' , [16 87 47 89 90 99 182]'};
rows = cellfun(@numel,C);
cols = size(C,2);
A = zeros(max(rows),cols);
for k = 1:cols
A(1:rows(k),k) = C{k};
end
producing:
A
A =
21 24 16
24 21 87
47 0 47
89 0 89
57 0 90
0 0 99
0 0 182
EDIT — (16 Aug 2020 at 21:31)
Corrected the preallocation of ‘A’ to use the previously calculated values of ‘rows’ and ‘cols’. Code otherwise unchanged.
.
6 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!