Get indices of matching values (vectorized find function)
Ältere Kommentare anzeigen
I want to find a function that does a "vectorized find" that would do the below:
>> a = rand(6, 1)
a =
0.4387
0.3816
0.7655
0.7952
0.1869
0.4898
>> b = randi(6, [6, 1])
b =
3
4
5
5
2
5
>> c = a(b)
c =
0.7655
0.7952
0.1869
0.1869
0.3816
0.1869
>> b_reconstructed = somefunction(a, c) % What is somefunction?
I know I can do something like
b_reconstructed = zeros(size(a));
for i = 1:numel(c)
b_reconstructed(i) = find(a == c(i), 1, 'first');
end
But that seems very inefficient if a, b, and c are very large (>10k rows)
Akzeptierte Antwort
Weitere Antworten (1)
Matt J
am 25 Sep. 2023
[~,b_reconstructed]=ismember(c,a)
Kategorien
Mehr zu Multidimensional Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!