我有一个包含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
但它将我的整个原始结构复制到新结构中,而不删除不需要的信息。任何帮助将不胜感激!
答案 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);