How to replace certain values in an array without using for-loop?

3 ビュー (過去 30 日間)
Louis
Louis 2013 年 7 月 16 日
I have a very long array of length couple million. Say, A=[1;2;3;4;5;2;3;4;1;....] I have another array of different length (order of thousands to millions), we can call this second array B.
I would like to replace values in the first array with 0s if the value in A is present in B.
Currently, I have the following code to do it:
for i=1:length(B)
A(A==B(i))=0;
end
However, I would like to get rid of for loop and make this as efficient as possible since the arrays that I am working with is very large, and this is only a very small portion of the entire code, which needs to be computable before I graduate.
Thank you in advance,

回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 7 月 16 日
編集済み: Azzi Abdelmalek 2013 年 7 月 16 日
A(ismember(A,B))=0
  4 件のコメント
Muthu Annamalai
Muthu Annamalai 2013 年 7 月 16 日
@Azzi shouldn't logical indexing work in this case?
A1( A1 == B1 ) = 0
Image Analyst
Image Analyst 2013 年 7 月 16 日
No, it won't. That will work only if they match up. It won't remove elements that occur anywhere in A or B.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeResizing and Reshaping Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by