Remake this without a loop

2 Ansichten (letzte 30 Tage)
sznailc
sznailc am 17 Okt. 2021
Bearbeitet: DGM am 17 Okt. 2021
How to rewrite this without using a loop?
Basically I want to replace elements in matrix A with 0, that are equal to any of element in vector "vector"
vector = [A(A >= 1.5)].' % Vector, don't change.
for i = 1:vector
A(A == vector(i)) = 0;
end

Akzeptierte Antwort

the cyclist
the cyclist am 17 Okt. 2021
% Pretend data
A = 1 : 7;
vector = [2 3 5];
% Replace values of A with 0, if they are in vector
A(ismember(A,vector)) = 0
A = 1×7
1 0 0 4 0 6 7

Weitere Antworten (1)

DGM
DGM am 17 Okt. 2021
Bearbeitet: DGM am 17 Okt. 2021
What's wrong with just using the test you're already doing? In the case you've given, the vector is unnecessary.
A(A >= 1.5) = 0;
Or more generally, if you actually need to test against another set,
A = randi(5,5,8)
v = [3 4];
A(ismember(A,v)) = 0;

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by