2016-12-15 74 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