2016-12-15 77 views
0

对不起,如果我有一个基本的问题,因为我是MATLAB新手,但我一直坚持一段时间。迭代槽结构MATLAB

贝娄是我到目前为止。我需要遍历rxnsBothKaletaS struct的每个字段,其中每个字段代表nx4单元格。我需要从单元格的第一列中提取信息作为用逗号分隔的单个字符串,然后将其分配给fname中的字段的索引。

(给出上下文:fname是基因的名称,在每个基因内是依赖于该基因的反应,我需要提取给定基因的所有反应,并将它们全部作为由逗号)

fname = fieldnames(rxnsBothKaletaS) 
for i = 1:numel(fname) 
    gene = rxnsBothKaletaS.(fname{i}) 

    for j = 1:size(gene,1) 
     rxns = rxns + char(string(gene(j,1))); 
    end 

    fname(i,2) = rxns; 
end 

回答

0

可以使用structfun通过结构的领域进行迭代。然后在我们将应用于每个字段的匿名函数中,我们可以使用strjoin连同逗号一起加入第一列x中的所有字符串。

fnames = structfun(@(x)strjoin(x(:,1), ','), rxnsBothKaletaS, 'UniformOutput', 0); 
+0

我得到一个错误: 错误使用strjoin(线55) 首先输入必须是字符阵列的单元阵列。 错误model_comparison> @(X)strjoin(X(:,1), '') 错误model_comparison(第17行) fnames = structfun(@(X)strjoin(X(:,1), ','),rxnsBothKaletaS, 'UniformOutput',0); –

+0

@SeanSadykoff如果你的'N×4'单元格阵列不是字符串,那么它是什么? – Suever