# Remove array elements but also store the element indices that were not removed

2 views (last 30 days)
Mohd Aaquib Khan on 23 Nov 2022
Commented: Image Analyst on 23 Nov 2022
I have a long array e.g. a = ["a", "b", "c", "d", "e" ,"f"]
I want to remove first and 5th element. u = [1,5]
For that I can do a(u) = []
But I also want the element indices that were not removed i.e. I want output as [2 3 4 6]
I tried a(~u) but it is not working.

Steven Lord on 23 Nov 2022
Do you want the indices or the elements that weren't deleted?
a = ["a", "b", "c", "d", "e" ,"f"];
u = [1 5];
indToKeep = setdiff(1:numel(a), u)
indToKeep = 1×4
2 3 4 6
I'm going to make a copy of a so you can compare the original with the modified copy.
a1 = a;
deletedElements = a1(u) % Extract elements 1 and 5 first
deletedElements = 1×2 string array
"a" "e"
a1(u) = [] % Then delete them from the orignnal vector
a1 = 1×4 string array
"b" "c" "d" "f"
Mohd Aaquib Khan on 23 Nov 2022
thank you, I will accept this after some time,
Actually I am currently using the same logic using setdiff(). Was just exploring if there were some easier,shorter ways to do it. Especially using '~'
Thanks again

Image Analyst on 23 Nov 2022
There are several ways. Here are two:
a = ["a", "b", "c", "d", "e" ,"f"]
a = 1×6 string array
"a" "b" "c" "d" "e" "f"
rowsToRemove = [1, 5];
aExtracted = a(rowsToRemove)
aExtracted = 1×2 string array
"a" "e"
aKept = setdiff(a, aExtracted)
aKept = 1×4 string array
"b" "c" "d" "f"
% Another way
aKept2 = a; % Initialize
aKept2(rowsToRemove) = []
aKept2 = 1×4 string array
"b" "c" "d" "f"
Image Analyst on 23 Nov 2022
a = [10 20 30 40 50 60 70];
indexes = 1 : numel(a);
rowsToRemove = [1, 5];
logicalIndexes = ismember(indexes, rowsToRemove)
logicalIndexes = 1×7 logical array
1 0 0 0 1 0 0
aExtracted = a(rowsToRemove)
aExtracted = 1×2
10 50
aKeepers = a(~logicalIndexes)
aKeepers = 1×5
20 30 40 60 70
% Also log what indexes are kept.
keeperIndexes = indexes(~logicalIndexes)
keeperIndexes = 1×5
2 3 4 6 7

### Categories

Find more on Matrix Indexing in Help Center and File Exchange

R2022b

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!