2011-01-28 6 views
3

에는 많은 항목이 들어있는 data1 data2, data3, data4라는 필드가있는 data라는 구조가 있다고합니다. 그러나 나는 동일한 필드를 가지고 있지만 그것에있는 각 필드의 처음 100 항목 만있는 변수 newdata를 만들고 싶습니다. 누구든지 루프 또는 무차별 방식없이이 작업을 수행하는 빠른 방법을 알고 있습니까?MATLAB 구조의 각 필드 값의 서브 세트

      data1: [3744x1 double] 
          data2: [3744x1 double] 
          data3: [3744x1 double] 
          data4: [3744x1 double] 

답변

8

사용 STRUCTFUN

newdata = structfun(@(x)x(1:100),data,'uniformOutput',false); 

예 :

>> data = struct('a',1:10,'b',1:10); 
>> newdata = structfun(@(x)x(1:3),data,'uniformOutput',false) 
newdata = 
    a: [1 2 3] 
    b: [1 2 3] 
+0

감사 완벽! – user295944

+1

그 작업을하기 위해서는'..., 'UniformOutput', false)'이 필요하다고 생각합니다. – gnovice

+0

@gnovice : 참으로 고마워요! – Jonas

관련 문제