Change function myfind (index)
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I wrote the function myfind that return index of key:
function index = myfind(vec, key)
len = length(vec);
index = 0;
for i = 1:len
if vec(i) == key
index = i;
end
end
How to change the function to return a vector of indices of all occurrences of the key?
0 Kommentare
Akzeptierte Antwort
Cedric
am 11 Mai 2014
Bearbeitet: Cedric
am 11 Mai 2014
Using the same approach as you developed so far, you would have to build index as a vector:
index = [] ;
for k = 1 : len
if vec(k) == key
index = [index, k] ;
end
end
Don't use i as a loop counter, because it should be reserved to complex notation. Now if you want to optimize a bit the approach, without using FIND, look at the following example:
>> key = 3 ;
>> vec = randi( 5, 1, 10 )
vec =
1 5 5 3 5 1 3 5 4 5
>> isEq = vec == key
isEq =
0 0 0 1 0 0 1 0 0 0
>> allInd = 1 : length( vec )
allInd =
1 2 3 4 5 6 7 8 9 10
>> allInd(isEq)
ans =
4 7
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!