2011-12-04 13 views

Odpowiedz

14

Zastosowanie logical indexing:

>> a = [1 5 3 4 2]; 
>> a = a(1 < a & a < 5) 
a = 
    3 4 2 
+2

To jest po prostu dziwne. Próbowałem 'a (1 texnic

5

prosty uszczypnąć do kodu byłoby to uproszczenie:

a = [1 5 3 4 2]; 
disp(find(a>1&a<5)) 
+0

To zwraca '[3 4 5]' zamiast '[3 4 2]'. – Karlo

3

ismember jest dobrym wyborem dla pojedynczych przypadkach

a = [1 5 3 4 2]; 
find(ismember(a, 2:4)) 
+0

Dobra uwaga. Zastanawiam się, czy możesz dodać coś o wydajności tego rozwiązania w porównaniu z akceptowanym. – texnic

+1

Zrobiłem to porównanie i jest lepiej używać indeksowania logicznego przyczyną jest szybsze. Rozwiązanie Find() jest marginalne ~ 5%, a ismember() jest ~ 35% wolniejsze od indeksowania logicznego. (Porównanie odbywa się poprzez ekstrakcję danych liczbowych tego samego rozmiaru matrycy 500 * 30 i uśrednienie na 100 iteracji). – professor

Powiązane problemy