使用二进制过滤器填充MATLAB结构数组的一部分

时间:2017-05-29 23:33:17

标签: arrays matlab struct

我可以使用逻辑数组过滤器轻松填充数组的一部分。即以下适用于数组:

mydata=[2 2 2];
myfilter=[false true true true false false];
myarray(myfilter)=mydata;

我为结构数组尝试了以下操作,但它给出了错误。

mydata=[2 2 2];
myfilter=[false true true true false false];
[mystruct(myfilter).myval] = mydata;

如果我已经使用循环填充了我的struct数组,我可以使用相同的过滤器访问数据,如下所示:

mydata=[2 2 2];
myfilter=[false true true true false false];
pp=0;
for p=1:length(myfilter)
    if myfilter(p)
        pp=pp+1;
        mystruct(p).myval = mydata(pp);
    end
end
[mystruct(myfilter).myval]

所以我可以循环工作来加载数据,然后按预期检索数据,但是有一种矢量化的方式来填充结构数组的一部分吗?

1 个答案:

答案 0 :(得分:0)

您可以按以下步骤操作:

mydata=[2 2 2];
myfilter=[false true true true false false];
myarray(myfilter) = mydata ;
% make structure

mystruct = struct('myval', num2cell(myarray));