通过matlab中的结构循环来排序

时间:2016-01-29 23:32:40

标签: matlab structure

我有一个包含7个字段的结构。在第7个字段的每个单元格中都有一个日期。我需要一个嵌套循环来对这些日期进行排序,如果在同一结构的第二个字段中不存在任何这些日期,我想获取该信息(来自所有7个字段)并创建一个仅包含迭代的新结构有第二场的日期,但不是第7场。我到目前为止的代码是:

for i=1:12 %number of dates in the 7th field
    for j=1:length(files_cdf) %number of dates in the 2nd field
        y(i,j)=isequal(files_cdf(j).date,files_cdf(i).deletables);
        if isequal(y(i,j),0)
            cdf(j)=files_cdf(j);
        end
    end
end

但它将我的整个原始结构复制到新结构中,而不删除不需要的信息。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

我认为可以通过bsxfun的一些向量化来消除循环,假设元素是datetime类型的标量:

% Convert to double
second  = datenum([files_cdf(:).date].');
seventh = datenum([files_cdf(:).deletables]);
%
% Make logical mask
mask = all(bsxfun(@ne,second,seventh),2)
%
% Mask struct array
cdf = files_cdf(mask);