如何cell2mat转换为一个非均匀单元到一个矩阵

13次意见(过去30天)
  1. 我有一个1 x 10的单元格,每个单元格数组中有不均匀的数据。
  2. 如何进行cell2mat转换而不丢失任何元素。
  3. 我想要的输出是这样的,每个单元格的内容都是一个行向量,后续单元格“串联”在它旁边的顺序出现在单元格数组中,即矩阵的行数等于最大(长度),而其他是零填充和列数等于单元格数组的列数。在这个例子中,单元格是1x10,结果cell2mat矩阵应该是x行乘10列。
形状如下:
DD = {3401×1 double} {3601×1 double} {8081×1 double} {4041×1 double} { 8721 ×1 double} {4281×1 double}
{5521×1 double} {4041×1 double} {4881×1 double} {5761×1 double}
从上面,在单元格每个数组的行数是不同的,但我想要一个输出,将隐蔽单元格到一个矩阵。
欲望输出
DD_matrix = 8721 -row by 10-column ( 8721是行号最大的单元格,其他的应该是零填充的)

接受的答案

西蒙•陈
西蒙•陈 2021年9月22日
按照以下步骤进行:
idx。size = cellfun(@length,DD);
idx。填充= max(idx.size)-idx.size;
ddpadding = cellfun(@(x,y) [x; 0 (y,1)],DD,num2cell(idx. padding),“大学”, 0);
DD_matrix = cell2mat(ddpadding);
3评论

登录评论。

更多答案(1)

马特·J
马特·J 2021年9月22日
cell2mat (DD (:))
1评论
漂亮的女孩
漂亮的女孩 2021年9月22日
编辑:漂亮的女孩 2021年9月22日
谢谢你! @Matt J 但这不是我想要的输出。
我想要的输出是这样的,每个单元格的内容都是一个行向量,后续单元格“串联”在它旁边的顺序出现在单元格数组中,即矩阵的行数等于最大(长度),而其他是零填充和列数等于单元格数组的列数。在这个例子中,单元格是1x10,结果cell2mat矩阵应该是x行乘10列。
形状如下:
DD = {3401×1 double} {3601×1 double} {8081×1 double} {4041×1 double} { 8721 ×1 double} {4281×1 double}
{5521×1 double} {4041×1 double} {4881×1 double} {5761×1 double}
从上面,在单元格每个数组的行数是不同的,但我想要一个输出,将隐蔽单元格到一个矩阵。
欲望输出
DD_matrix = 8721 -row by 10-column ( 8721是行号最大的单元格,其他的应该是零填充的)

登录评论。

类别

了解更多数据类型转换帮助中心而且文件交换

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!