查找和替换大型矩阵中元素的最快方法是什么?

Sto*_*oka 0 matlab

我想在大矩阵中找到并替换数字A.矢量BC具有相同的尺寸并包含值.即使A可能包含非唯一值,它也包含所有数字B.我想搜索A所有值,B并用相应的值替换它们C.

例如,设A为2.5·10 6 ×4矩阵.B并且C是1.5·10 6 ×1并且具有唯一值.我尝试过使用以下for循环:

for q = 1:size(B, 1)
    A(A == B(q, 1)) = C(q, 1);
end
Run Code Online (Sandbox Code Playgroud)

但它很慢.有更快的方法吗?

Eit*_*n T 5

想到的最直接的解决方案是使用ismember:

[tf, loc] = ismember(A, B);
A(tf) = C(loc(tf));
Run Code Online (Sandbox Code Playgroud)