Strona 1 z 1

Usuwanie elementów z tablicy

: 06 sty 2009 17:46
autor: kedar50
Witam

Mam tablice jednowymiarową(przeszło 10 000 elementów) i nie wiem jak usunąc co drugi lub trzeci element z tej tablicy.

Z góry dzięki za pomoc.

Pozdrawiam

Re: Usuwanie elementów z tablicy

: 07 sty 2009 09:13
autor: fajfi
Cześć,
tak na kolanie zrobiłem mały przykład, mam nadzieję, że on coś rozjaśni.
Użyj funkcji "delete from array" i rejestru przesuwnego, dodatkowo trzeba zastanowić się nad indeksami kolejnych usuwanych elementów.
Pewnie nie jest to jedyna ani najelegantsza metoda, ale działa.
Pozdrawiam
Fajfi

Re: Usuwanie elementów z tablicy

: 07 sty 2009 09:31
autor: marcin_kodi
... lub w taki sposób

Re: Usuwanie elementów z tablicy

: 07 sty 2009 14:26
autor: darekc
Pomysł z użyciem obiektów: Decimate 1D Array i Interleave 1D Arrays jest bardzo fajny, ale:

1. diagram powinien wyglądać nieco inaczej (usuwanie elementów 1.jpg),
2. jeśli rozmiar tablicy wejściowej nie będzie całkowitą wielokrotnością 2 lub 3, to niektóre jej elementy nie znajdą się w tablicach wyjściowych (są one równej długości).

Dołączam swoją propozycję (usuwanie elementów 2.jpg)

Re: Usuwanie elementów z tablicy

: 07 sty 2009 14:50
autor: jogurt_owocowy
Pomysł z użyciem obiektów: Decimate 1D Array i Interleave 1D Arrays jest bardzo fajny, ale
pod warunkiem, że wartość "co który element wyrzucić" jest stała i stała jest też lokalizacja pierwszego elementu do wyrzucenia.
Wadą pomysłów z Delete From Array oraz z Build Array jest konieczność ciągłych realokacji pamięci na tablicę.
Jeśli wydajność jest istotna, to lepiej najpierw obliczyć rozmiar tablicy wyjściowej uwzględniając także to, o czym pisał darekc (jeśli rozmiar tablicy wejściowej nie będzie całkowitą wielokrotnością X), alokować hurtem pamięć za pomocą Initialize Array i przepisać do tablicy wyjściowej odpowiednie komórki tablicy wejściowej (pojedynczo albo kawałkami - trzeba by sprawdzić co jest wydajniejsze).
Pozdrawiam

Re: Usuwanie elementów z tablicy

: 07 sty 2009 17:18
autor: vittcor
Witam. To rozwiązanie to trochę powtórzenie wcześniejszych, ale zakładam ze tak dużą ilość danych masz w jakimś pliku, np.: w pliku tekstowym. Nie ma tutaj problemu z ilością danych ( rozmiarem tablicy ) i wydaje mi się że pozwala to na usuwanie dowolnie wybranych danych,np: co piąty lub co dziesiąty.
Pozdrawiam

Re: Usuwanie elementów z tablicy

: 08 sty 2009 10:07
autor: darekc
Zgadza się, jeśli ważna jest szybkość wykonania kodu, to nie obejdzie się bez wstępnej rezerwacji pamięci na tablicę wynikową.
Istnieją jeszcze co najmniej 2 sposoby rozwiązania:
1. z użyciem struktury MathScript Node - tu jednak trzeba mieć zainstalowanego Matlaba i umieć się nim posługiwać, wystarczy jedno wyrażenie do usunięcia wskazanych elementów, 2. z użyciem struktury Formula Node - tu trzeba znać język C, no i trzeba rezerwować pamięć na tablicę wynikową.