How to vectorize a find
古いコメントを表示
x = zeros(1000,1);
x(76) = 1;
x(100) = 1;
x(200) = 1;
I can do:
first = find(x ==1, 1, 'first'); %the answer =76
but this is slow. I would like to speed this up. How? thanks
1 件のコメント
Matlab2010
2013 年 1 月 15 日
編集済み: Matlab2010
2013 年 1 月 15 日
採用された回答
その他の回答 (2 件)
Sean de Wolski
2012 年 12 月 11 日
If you only have zeros and ones and you are positive there is atleast one one, then you can use the second output from max().
[~,first] = max(x);
I don't know if this will be faster or not.
Mark Whirdy
2012 年 12 月 11 日
編集済み: Mark Whirdy
2012 年 12 月 11 日
a temporary vector of row numbers, then use your vector-of-interest & a logicsl statement to index this row-number vector
a =[1:size(x,1)]'; % row numbers
b=a(x==1); % logical indexing the populated rows
b(1) % first instance
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!