2016-12-15 13 views
0

申し訳ありませんが、私はMATLABを初めて使用して以来、基本的な質問がありますが、しばらくの間立ち往生しています。トラフ構造体を反復するMATLAB

私がこれまで持っていたものです。私はrxnsBothKaletaSの各フィールドを反復する必要があります。各フィールドは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の最初の列のすべての文字列をコンマで結合することができます。

+0

fnames = structfun(@(x)strjoin(x(:,1), ','), rxnsBothKaletaS, 'UniformOutput', 0); 
私はエラーを取得:strjoinを用い エラー(線55) 最初の入力が文字列のセル配列でなければなりません。 エラーmodel_comparisonで> @(x)はstrjoin(X(:、1)、 '')model_comparisonで エラー(線17) fnames = structfun(@(x)はstrjoin(X(:、1)、 '、')、rxnsBothKaletaS、 'UniformOutput'、0); –

+0

@SeanSadykoffあなたの 'N x 4'セル配列が文字列でない場合、それは何ですか? – Suever

関連する問題