Could someone explain how this code works?
1 次查看(过去 30 天)
显示 更早的评论
S=[1 3 0 2 0 0];
C=[0 2];
[~,col] = ismember(C,S);
S(col) = [];
S =
1 3 0 0
This code is for : exclude C from S with repetition while keeping the same order of elements in S.
But how it works?
[~,col] = ismember(C,S);
0 个评论
采纳的回答
Guillaume
2018-10-23
编辑:Guillaume
2018-10-23
I'm not sure what there is to explain. As documented, col tells you where each element corresponding element of C is found in S. If the element of C is found in more than one position, you'll get the first one of these.
The code is also flawed and will error if any element of C is not found at all in S. The safe version of the code would be:
S = [1 3 0 2 0 0];
C = [0 2 4]; %note that the original code would error because 4 is not present is S
[found, where] = ismember(C, S);
S(where(found)) = [] %this will not error
4 个评论
Torsten
2018-10-24
Note that the code from above assumes that the elements in C are distinct.
So setting
S=[1 3 0 2 0 0];
C=[0 0 2];
will not produce
S=[1 3 0]
but also
S=[1 3 0 0]
Best wishes
Torsten.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!