Removing a specific number from vector

Hi Everyone,
Suppose I have the following
A = 4
and
Z = [1 9 2 3 4 5]
how do I remove the value A from Z, to get
Z = [1 9 2 3 5]
Regards,
Ulrik.

답변 (4개)

Gurudatha Pai
Gurudatha Pai 2011년 6월 17일

5 개 추천

A = 4;
Z = [1 9 2 3 4 5]
Z1 = Z(find(Z~=A))
that should work
Walter Roberson
Walter Roberson 2011년 6월 17일

3 개 추천

Z(Z==A) = [];
Warning: if you have floating point numbers instead of integers, you will usually need to compare with a tolerance instead of ==
Tiasa Ghosh
Tiasa Ghosh 2018년 7월 25일

1 개 추천

You can also use setdiff function.
a=4;
z=[1 9 2 3 4 5];
setdiff(z,a)

댓글 수: 2

Gospel Oh
Gospel Oh 2018년 11월 15일
If the function were to be put into MatLab, the answer actually comes out to be an ordered version, missig the a:
ans = 1 2 3 5 9
close, but not quite
You may pass 'stable' as additional input to setdiff, to prevent sorting:
a=4;
z=[1 9 2 3 4 5];
setdiff(z,a,'stable')

댓글을 달려면 로그인하십시오.

Richard Barrett-Jolley
Richard Barrett-Jolley 2018년 7월 13일

0 개 추천

Yes, that would work, but I would recommend simply:
Z=Z(Z~=A);

댓글 수: 4

Walter Roberson
Walter Roberson 2018년 7월 17일
I don't think I've seen anyone benchmark expressing as a subset copy, compared to expressing as a deletion such as I did.
Personally I find the deletion easier to read.
Walter Roberson
Walter Roberson 2019년 4월 30일
My testing suggests that Z=Z(Z~=A) is faster than deleting from Z, taking about 82% as long, at least for longer arrays.
huda nawaf
huda nawaf 2022년 8월 7일
HI
Im facing the same problem, but the size of A is more than one.
so Z=Z(Z~=A); does not work. Is there an alternative?
Thanks
Z = Z(~ismember(Z, A));

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Entering Commands에 대해 자세히 알아보기

질문:

2011년 6월 17일

댓글:

2022년 8월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by