Element odwrotny do Index Array
Element odwrotny do Index Array
Dane i tablice ciąg dalszy .
Do tej pory wprowadzałem obrazek, wyrzucało mi dane z obrazka do tabeli o konkretnym pikselku. Teraz chciałbym odwrotnie. To znaczy:
- Color -> color to RGB ->Bundle ->
element odwrotny do "index array" (informujący, że dla konkretnego elementu w tablicy ma wprowadzić to co idzie z Bundle)
Jest coś takiego? Może za bardzo coś utrudniam?
Dzięki za pomoc.
Do tej pory wprowadzałem obrazek, wyrzucało mi dane z obrazka do tabeli o konkretnym pikselku. Teraz chciałbym odwrotnie. To znaczy:
- Color -> color to RGB ->Bundle ->
element odwrotny do "index array" (informujący, że dla konkretnego elementu w tablicy ma wprowadzić to co idzie z Bundle)
Jest coś takiego? Może za bardzo coś utrudniam?
Dzięki za pomoc.
- spec.kolombo
- Posty: 126
- Rejestracja: 20 sie 2008 06:33
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Gdynia
- Kontakt:
Element odwrotny do Index Array
A "insert into array" nie działa?
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
Spec Kolombo
Element odwrotny do Index Array
No właśnie nie do końca. W Index Array mam ustawione tak, że jden index to adres wiersz, drugi indeks adres kolumny. W insert into array jest inaczej. Można to jakoś zmienić? Nie jestem obeznany z Labview.
- spec.kolombo
- Posty: 126
- Rejestracja: 20 sie 2008 06:33
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Gdynia
- Kontakt:
Element odwrotny do Index Array
Jak podepniesz tablicę 2 wymiarową, to będziesz miał też 2 indeksy.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
Spec Kolombo
Element odwrotny do Index Array
To czemu teraz nie działa?
Pisane w 8.5.
Pisane w 8.5.
- Załączniki
-
- Untitled 1.vi
- (9.71 KiB) Pobrany 311 razy
- smiga
- Administrator
- Posty: 817
- Rejestracja: 04 paź 2009 12:41
- Wersja środowiska: LabVIEW 2019
- Lokalizacja: Słupsk
Re: Element odwrotny do Index Array
Z RGB budujesz klaster. Potrzebujesz więc dwuwymiarowej tablicy klastrów podłączonej na wejście Insert Into Array. Element który wstawiasz do takiej tablicy to właśnie klaster.
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Element odwrotny do Index Array
Jest jeszcze jeden problem, poza typem tablicy. Nie możesz za pomocą insert wstawić do tablicy dwuwymiarowej jednego elementu, tylko całą kolumnę/wiersz. Prostym rozwiązaniem jest In-Place Structure.
- Załączniki
-
- insert.vi
- (9.79 KiB) Pobrany 320 razy
- spec.kolombo
- Posty: 126
- Rejestracja: 20 sie 2008 06:33
- Wersja środowiska: LabVIEW 2009
- Lokalizacja: Gdynia
- Kontakt:
Element odwrotny do Index Array
hmm, faktycznie do "insert into array" pozwala na zdefiniowanie tylko wiersza lub kolumny i da się wtedy tylko wrzucić tablicę 1 wymiarową.
Rozwiązania są takie:
1. Jeśli znasz jaki będzie docelowy rozmiar tablicy którą tworzysz, to zainicjalizuj ją za pomocą np. "Initialize array" albo dwóch pętli for i następnie modyfikuj zawartość za pomocą "Replace array subset"
2. Twórz od razu całe wiersze (lub kolumny) pikseli i wrzucaj za pomocą "insert into array" podpinając tylko nr wiersza (lub kolumny)
Rozwiązania są takie:
1. Jeśli znasz jaki będzie docelowy rozmiar tablicy którą tworzysz, to zainicjalizuj ją za pomocą np. "Initialize array" albo dwóch pętli for i następnie modyfikuj zawartość za pomocą "Replace array subset"
2. Twórz od razu całe wiersze (lub kolumny) pikseli i wrzucaj za pomocą "insert into array" podpinając tylko nr wiersza (lub kolumny)
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
Spec Kolombo
Re: Element odwrotny do Index Array
Albo możesz skorzystać z build array.
W załączniku przesyłam fajny przykładzik (znaleziony gdzieś na lavie) pokazujący porównanie szybkości wykonywania tych trzech operacji plus dołączyłem patent podrzucony przez kolegę PiDi'ego. Z tego co mi wyszło to wynika, że
najlepiej wychodzi metoda PiDi'ego initialize array z in plac, następnie zwykłe initialize array, ale w tych przypadkach musisz znać rozmiar tablicy, na starcie. Trzecie miejsce ma build array, a na końcu insert into array, które to wypada strasznie blado na tle pozostałych metod.
Jako, że ostatnio bawiłem się właśnie na obrazie, w szczególności operacji na pikselach (2wymiarowych tablicach o sporych rozmiarach), których rozmiarów nie znałem, gdyż się zmieniały, metoda build array dała mega różnicę niż wcześniej wykorzystywana insert into array. Co więcej polecam, jak ktoś ma więcej niż jeden rdzeń (nie wiem od której wersji LV to działa), użycie Configure Iteration Parellism, który przyspieszył kilkukrotnie moje obliczenia w pętli. By to uruchomić prawym na pętle FOR i opcja o tej nazwie.
W załączniku przesyłam fajny przykładzik (znaleziony gdzieś na lavie) pokazujący porównanie szybkości wykonywania tych trzech operacji plus dołączyłem patent podrzucony przez kolegę PiDi'ego. Z tego co mi wyszło to wynika, że
najlepiej wychodzi metoda PiDi'ego initialize array z in plac, następnie zwykłe initialize array, ale w tych przypadkach musisz znać rozmiar tablicy, na starcie. Trzecie miejsce ma build array, a na końcu insert into array, które to wypada strasznie blado na tle pozostałych metod.
Jako, że ostatnio bawiłem się właśnie na obrazie, w szczególności operacji na pikselach (2wymiarowych tablicach o sporych rozmiarach), których rozmiarów nie znałem, gdyż się zmieniały, metoda build array dała mega różnicę niż wcześniej wykorzystywana insert into array. Co więcej polecam, jak ktoś ma więcej niż jeden rdzeń (nie wiem od której wersji LV to działa), użycie Configure Iteration Parellism, który przyspieszył kilkukrotnie moje obliczenia w pętli. By to uruchomić prawym na pętle FOR i opcja o tej nazwie.
- Załączniki
-
- ArrayInitializationComparison_9.0.vi
- plik w wersji 8.5
- (15.61 KiB) Pobrany 327 razy
Re: Element odwrotny do Index Array
W końcu zrobiłem to tak jak w załączniku. Chciałbym te tablice teraz zapisać do pliku. Array To Color Image nie działa. Nie mogę podpiąć dwuwymiarowej tablicy do tej ikony.
Trzeba zmienić wymiar tablicy?
Trzeba zmienić wymiar tablicy?
- Załączniki
-
- Untitled 1.vi
- (12.91 KiB) Pobrany 316 razy
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Element odwrotny do Index Array
Znów masz problem z typem danych. Polecam ctrl+H, najechanie na zły kabel i przeczytanie w czym leży problem, oraz zaglądanie do pomocy na temat bloczków. Jeśli chcesz używać wejścia U64 w ArrayToColor, musisz mieć jeszcze czwartego integera w swoim klastrze (parametr alpha). W załączniku podaję Ci jeszcze dwa inne rozwiązania. Wersja 2 to jest tylko dodanie jednego bloczka do twojego kodu. Wersja 1 wydaje mi się najlepszym rozwiązaniem, bo nie używam w niej żadnych klastrów - kod się wyraźnie upraszcza.
- Załączniki
-
- vi.vi
- (43.53 KiB) Pobrany 274 razy
Re: Element odwrotny do Index Array
Wszystko zadziałało.
Dzięki! Za rady i cierpliwość.
Dzięki! Za rady i cierpliwość.