2011-01-28 14 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

関連する問題