Excluding one vector from another vector with repetition
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sarah Ansari
am 18 Jun. 2018
Kommentiert: Bruno Luong
am 9 Dez. 2020
I want to get a new vector that has elements of S excluding the values in C with repetition.
S=[1 3 0 2 0 0] C=[0 2] B=setdiff(S,C) B=[1 3] while I need the output as [1 3 0 0]. I need the other zeros in the output but setdiff removes all the zeros. I also tried ismember function and it has the same result.
B=S(~ismember(S,C)) B=[1 3]
To make it clearer, I need to exclude a from s with repetition while keeping the same order of elements in s.
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (1)
Bruno Luong
am 9 Dez. 2020
Bearbeitet: Bruno Luong
am 9 Dez. 2020
"This method didn't work for me if my C was, say, [0,0,2]
If I want to remove two zeros this wasn't quite cutting it.'
A=[3 1 0 2 0 0 4];
B=[0 7 0 2];
D = DiffRep(A,B)
function D=DiffRep(A,B)
D=A(~ismember(count(A),count(B),'rows'));
end
function C=count(A)
A=A(:);
[C,i]=sort(A);
j=find([true;diff(C)]);
lgt=diff(j);
c=ones(size(A));
c(j(2:end))=1-lgt;
c=cumsum(c);
c(i)=c;
C=[A,c];
end
gives result
A =
3 1 0 2 0 0 4
B =
0 7 0 2
D =
3 1 0 4
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!