2016-12-15 2 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의 첫 번째 열에있는 모든 문자열을 쉼표와 함께 결합 할 수 있습니다. 오류 사용 strjoin (라인 55) 먼저 입력 문자 배열 한 셀 어레이 여야

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

오류를 얻는다. model_comparison에 오류> @ (X) strjoin (X (:, 1) ',') model_comparison에 오류 (라인 17) fnames = structfun (@ (X) strjoin (X (:, 1), ','), rxnsBothKaletaS, 'UniformOutput', 0); –

+0

@SeanSadykoff 'N x 4' 셀 배열이 문자열이 아니면 무엇입니까? – Suever