Change function myfind (index)

조회 수: 5 (최근 30일)
Cristian
Cristian 2014년 5월 11일
편집: Cedric 2014년 5월 11일
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?

채택된 답변

Cedric
Cedric 2014년 5월 11일
편집: Cedric 2014년 5월 11일
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개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by