我陷入了这里发生的事情。这是我的理解,因此,C{1}
有一列字符串。像这样的东西:
A231
A354
A356
A234
.
.
pattern continues until the end
ids
然后获取该列的副本,idmlh
成为单元格数组的第二个元素,在这种情况下是矩阵。然后在idsCo
和idx
中创建一个空数组。然后,它遍历ids
列中的所有行,并检查该行中的内容是否在另一个与ids
,parIDs
具有相似维度的数据结构中找到。所以这就是第一次混乱的地方,
如果它不是成员,那么它将索引值存储在idx
中?如果它是一个成员那么究竟发生了什么?
我对此部分最不确定:
else
[~,~,ii] = intersect(ids{cnt}, parIDs) ;
idsCo = [idsCo ; Lbll(ii) ] ;
end
end
ids(idx) = [] ;
idmlh(idx,:) = [] ;
以下是完整代码:
ids = C{1} ;
idmlh = C{2} ;
idsCo = [] ;
idx = [] ; label for
for cnt=1:length(ids)
if ~ismember(strtrim(ids{cnt}), parIDs)
idx = [idx cnt] ;
else
[~,~,ii] = intersect(ids{cnt}, parIDs) ;
idsCo = [idsCo ; Lbl(ii) ] ;
end
end
ids(idx) = [] ;
idmlh(idx,:) = [] ;
答案 0 :(得分:0)
1: ids = C{1} ;
2: idmlh = C{2} ;
3: idsCo = [] ;
4: idx = [] ; label for
5: for cnt=1:length(ids)
6: if ~ismember(strtrim(ids{cnt}), parIDs)
7: idx = [idx cnt] ;
8: else
9: [~,~,ii] = intersect(ids{cnt}, parIDs) ;
10: idsCo = [idsCo ; Lbl(ii) ] ;
11: end
12: end
13: ids(idx) = [] ;
14: idmlh(idx,:) = [] ;
至关重要
在ids
的所有元素的循环中,它检查cns
元素是否属于parIDs
数组。
如果不是(~ismember
被评估为true
),那么实际的cnt
值将附加到idx
数组。
如果它是成员(~ismember
被评估为false
),那么它会询问两个数组中ids{cnt}
(1x1)和parIDs
(Nx1)的哪些元素。忽略元素的值([~,...
),也忽略第一个数组中此元素的索引(...,~,...
)。第二个数组中元素的索引分配给ii
(...,ii]=
)。
然后ii
的{{1}}元素附加到Lbl
数组。
最后,idsCo
中ids
及其idmlh
中不属于parIDs
的对应元素被空数组替换。