我有这个单元格数组,它来自生成dewey ID的mat实验室代码:
POT1 =
'a0' [] [] []
'a0' 'c0' [] []
'a0' 'b0' [] []
'a0' 'c1' [] []
'a0' 'd0' [] []
'a0' 'c0' 'd1' []
'a0' 'b0' 'd2' []
'a0' 'd0' 'd3' []
'a0' 'd0' 'c2' []
'a0' 'd0' 'b1' []
'a0' 'd0' 'd4' []
'a0' 'c1' 'c3' []
'a0' 'c1' 'b2' []
'a0' 'c1' 'c3' 'd5'
'a0' 'c1' 'b2' 'd6'
'a0' 'd0' 'b1' 'd7'
'a0' 'd0' 'c2' 'd8'
请注意,第1列是第2列的父级,第2列是第3列的内容.etc
所以我想构建一个代码,给出每个单元格的全名,如下所示:
POT1 =
a0 [] [] []
a0 a0.c0 [] []
a0 a0.b0 [] []
a0 a0.c1 [] []
a0 a0.d0 [] []
a0 a0.c0 a0.c0.d1 []
a0 a0.b0 a0.b0.d2 []
a0 a0.d0 a0.d0.d3 []
a0 a0.d0 a0.d0.c2 []
a0 a0.d0 a0.d0.b1 []
.
.
.
.
我构建的代码不完整,并告诉我:“索引超出矩阵维度”错误:
for i=1:length(POT1)
for j=3:size(POT1,2)
if ~isempty(POT1{i,j})
POT1{i,j}=[POT1{i,j-2} POT1{i,j-1} POT1{i,j}];
end
end
end
POT1
答案 0 :(得分:4)
我认为你是在正确的轨道上,但如果你逐列处理它会更容易。这样,您只需要为每个条目查找一列:
for jj=2:size(POT1,2)
for ii=1:size(POT1,1)
if ~isempty(POT1{ii,jj})
POT1{ii,jj}=[POT1{ii,jj-1} '.' POT1{ii,jj}];
end
end
end
btw:length返回Length of vector or largest array dimension
,因此下次更好地使用size
。
答案 1 :(得分:2)
如果空格上有'%两个空格'的向量,那将非常简单。
您可以将其转换为矩阵,其余部分很简单:
[POT1(:,1:2) '.' POT1(:,3:4)]
之后你可以剥离空格并完成。