Usuwanie elementów z tablicy

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
kedar50
Posty: 5
Rejestracja: 29 lis 2008 13:02
Kontakt:

Usuwanie elementów z tablicy

Post 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
Ostatnio zmieniony 27 sie 2012 13:10 przez kedar50, łącznie zmieniany 1 raz.
Awatar użytkownika
fajfi
Posty: 185
Rejestracja: 28 sty 2004 00:00
Wersja środowiska: LabVIEW 2010
Lokalizacja: Wrocław

Re: Usuwanie elementów z tablicy

Post 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
Ostatnio zmieniony 07 sty 2009 09:16 przez fajfi, łącznie zmieniany 1 raz.
marcin_kodi
Posty: 5
Rejestracja: 26 lut 2008 22:25
Lokalizacja: Gdańsk
Kontakt:

Re: Usuwanie elementów z tablicy

Post autor: marcin_kodi »

... lub w taki sposób
darekc
Posty: 77
Rejestracja: 29 mar 2007 00:00
Lokalizacja: Gliwice

Re: Usuwanie elementów z tablicy

Post 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)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Usuwanie elementów z tablicy

Post 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
Awatar użytkownika
vittcor
Posty: 12
Rejestracja: 04 sty 2007 00:00

Re: Usuwanie elementów z tablicy

Post 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
...
darekc
Posty: 77
Rejestracja: 29 mar 2007 00:00
Lokalizacja: Gliwice

Re: Usuwanie elementów z tablicy

Post 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ą.
ODPOWIEDZ