Element odwrotny do Index Array

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.
cloaw
Posty: 12
Rejestracja: 07 lut 2011 16:58
Wersja środowiska: LabVIEW 2010

Element odwrotny do Index Array

Post autor: cloaw »

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.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Element odwrotny do Index Array

Post autor: spec.kolombo »

A "insert into array" nie działa?
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
cloaw
Posty: 12
Rejestracja: 07 lut 2011 16:58
Wersja środowiska: LabVIEW 2010

Element odwrotny do Index Array

Post autor: cloaw »

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.
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Element odwrotny do Index Array

Post autor: spec.kolombo »

Jak podepniesz tablicę 2 wymiarową, to będziesz miał też 2 indeksy.
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
cloaw
Posty: 12
Rejestracja: 07 lut 2011 16:58
Wersja środowiska: LabVIEW 2010

Element odwrotny do Index Array

Post autor: cloaw »

To czemu teraz nie działa?

Pisane w 8.5.
Załączniki
Untitled 1.vi
(9.71 KiB) Pobrany 311 razy
Awatar użytkownika
smiga
Administrator
Posty: 817
Rejestracja: 04 paź 2009 12:41
Wersja środowiska: LabVIEW 2019
Lokalizacja: Słupsk

Re: Element odwrotny do Index Array

Post autor: smiga »

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.
__ Arkadiusz Śmigielski, tel. 662 01 01 74___
ObrazekObrazekObrazek
Pomogłem ... postaw kawę: https://buycoffee.to/smiga
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Element odwrotny do Index Array

Post autor: PiDi »

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
ObrazekObrazekObrazekObrazek
Awatar użytkownika
spec.kolombo
Posty: 126
Rejestracja: 20 sie 2008 06:33
Wersja środowiska: LabVIEW 2009
Lokalizacja: Gdynia
Kontakt:

Element odwrotny do Index Array

Post autor: spec.kolombo »

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)
Lepiej być bogatym i zdrowym, niż biednym i chorym.
Spec Kolombo
oczekp
Posty: 161
Rejestracja: 22 lis 2009 15:12
Wersja środowiska: LabVIEW 2010

Re: Element odwrotny do Index Array

Post autor: oczekp »

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.
Załączniki
ArrayInitializationComparison_9.0.vi
plik w wersji 8.5
(15.61 KiB) Pobrany 327 razy
cloaw
Posty: 12
Rejestracja: 07 lut 2011 16:58
Wersja środowiska: LabVIEW 2010

Re: Element odwrotny do Index Array

Post autor: cloaw »

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?
Załączniki
Untitled 1.vi
(12.91 KiB) Pobrany 316 razy
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Element odwrotny do Index Array

Post autor: PiDi »

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
ObrazekObrazekObrazekObrazek
cloaw
Posty: 12
Rejestracja: 07 lut 2011 16:58
Wersja środowiska: LabVIEW 2010

Re: Element odwrotny do Index Array

Post autor: cloaw »

Wszystko zadziałało.

Dzięki! Za rady i cierpliwość.
ODPOWIEDZ