MATLAB: Remove elements from a structure array, whose values also exist in a different structure array

remove elementsstruct

Hi all. Question from novice: I have 2 structure arrays and I would like to remove all elements from one array, which have a name, that also exist as the same name in the other structure array. My code so far:
file_plots = dir('*.jpg');
file_raw = dir('*.csv');
% remove file extensions
for i = 1:1:length(file_raw)
file_total_raw(i).name = file_raw(i).name(1:length(file_raw(i).name)-4);
end;
for i = 1:1:length(file_plots)
file_existing_plots(i).name=file_plots(i).name(1:length(file_plots(i).name)-4);
end;
Some more info:
file_plots =
6x1 struct array with fields:
name
date
bytes
isdir
datenum
file_raw =
11x1 struct array with fields:
name
date
bytes
isdir
datenum
Specifically: I want to filter out all elements of file_raw, which share a name with file_plots and the results should also be a new structure array called file_raw_filtered. Hope this describes my problem and many many thanks! Max

Best Answer

name_raw = {file_raw.name};
name_plots = {file_plots.name};
keep = ~ismember(name_raw, name_plots);
file_raw_filtered = file_raw(keep);
Related Question