MATLAB 结构体中每个字段的值的子集

3

假设有一个名为“数据”的结构体,其中包含名为data1、data2、data3、data4的字段,并且每个字段中都有很多项。但我想创建一个名为newdata的变量,它具有相同的字段,但只包含每个字段的前100个项目。有没有一种不需要循环或蛮力方法快速完成这个任务的方式?

                           data1: [3744x1 double]
                           data2: [3744x1 double]
                           data3: [3744x1 double]
                           data4: [3744x1 double]
1个回答

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]

1
我认为你需要加上 ...,'UniformOutput',false) 才能使其正常工作。 - gnovice
2
如果您觉得这个答案有用,请考虑接受它。 - Jonas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接