Remake this without a loop

1 回表示 (過去 30 日間)
sznailc
sznailc 2021 年 10 月 17 日
編集済み: DGM 2021 年 10 月 17 日
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

採用された回答

the cyclist
the cyclist 2021 年 10 月 17 日
% 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

その他の回答 (1 件)

DGM
DGM 2021 年 10 月 17 日
編集済み: DGM 2021 年 10 月 17 日
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;

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by