MATLAB

2012-11-07 3 views
3

세포 배열 내가 ID를 듀이 생성하는 매트 실험실 코드에서 온되고이 세포 배열이 편집하는 방법 : 해당 컬럼 1의 부모MATLAB

POT1 = 

     'a0'  []  []  [] 
     'a0' 'c0'  []  [] 
     'a0' 'b0'  []  [] 
     'a0' 'c1'  []  [] 
     'a0' 'd0'  []  [] 
     'a0' 'c0' 'd1'  [] 
     'a0' 'b0' 'd2'  [] 
     'a0' 'd0' 'd3'  [] 
     'a0' 'd0' 'c2'  [] 
     'a0' 'd0' 'b1'  [] 
     'a0' 'd0' 'd4'  [] 
     'a0' 'c1' 'c3'  [] 
     'a0' 'c1' 'b2'  [] 
     'a0' 'c1' 'c3' 'd5' 
     'a0' 'c1' 'b2' 'd6' 
     'a0' 'd0' 'b1' 'd7' 
     'a0' 'd0' 'c2' 'd8' 

메모를 열 2 열 2의 paret입니다

POT1 =

a0  []  []   [] 
    a0 a0.c0  []   [] 
    a0 a0.b0  []   [] 
    a0 a0.c1  []   [] 
    a0 a0.d0  []   [] 
    a0 a0.c0 a0.c0.d1  [] 
    a0 a0.b0 a0.b0.d2  [] 
    a0 a0.d0 a0.d0.d3  [] 
    a0 a0.d0 a0.d0.c2  [] 
    a0 a0.d0 a0.d0.b1  [] 
    . 
    . 
    . 
    .  
: 열 3..etc

그래서 나는 다음과 같은 각 셀의 전체 이름을 제공하는 코드를 구축하려는 내가 구축

코드가 완료되지 않은 날 제공 : 오류 "인덱스 매트릭스 크기 초과"당신이 빈 공간에 '% 두 공간'과 벡터가있는 경우

for i=1:length(POT1) 
     for j=3:size(POT1,2) 
      if ~isempty(POT1{i,j}) 
      POT1{i,j}=[POT1{i,j-2} POT1{i,j-1} POT1{i,j}]; 
      end 
     end 
    end 
    POT1 

답변

4

나는 당신이 올바른 길을 가고 있다고 생각하지만, 그것을 한 칸씩 처리하는 것이 더 쉽습니다. 이 방법, 당신은 다시 각 항목에 대해 하나의 열을 볼 필요가 :

for jj=2:size(POT1,2) 
    for ii=1:size(POT1,1) 
     if ~isempty(POT1{ii,jj}) 
      POT1{ii,jj}=[POT1{ii,jj-1} '.' POT1{ii,jj}]; 
     end 
    end 
end 

을 BTW : lengthsize을 사용하므로 다음의 Length of vector or largest array dimension 반환합니다.

2

그것이 정말 쉬운 것입니다.

당신은 매트릭스로 변환 할 수 있으며 나머지는이 간단하다 :

[POT1(:,1:2) '.' POT1(:,3:4)] 

는 그 후 당신은 단지 공간을 제거하고 수행 할 수 있습니다.